gpt4 book ai didi

java - 如何在java中将括号内的代码分组为一个单元

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:18:02 24 4
gpt4 key购买 nike

我有以下句子:

"these were: s1, which has the a domain active site mutated to agha; s2, which has the a domain active site mutated to agha; and bm, which has three point mutations (i272a, d346a and d348a) within the b domain that prevent substrate binding [15]."

我的目标是获取括号之间的一组代码,如下所示:

(i272a, d346a and d348a)

那么我如何在 java 中使用任何其他方式来做到这一点,同时考虑到这些代码可以用诸如“and”或“or”之类的连词分隔?

预期结果应如下所示,因为它存储在 map 中:

index=27 , value=i272a
index=37 , value=d346a
index=47 , value=d348a

注意:索引不是句子中代码开始的正确索引。

最佳答案

正如 spgodara 所说,您可以使用 regular expression 解决此问题.在 Java 中,您可以使用类 Pattern为了这。要更好地理解 Java 中的正则表达式,请访问网站 RegexPlanet .以下是如何解决您的问题的示例:

package stackoverflow;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexExample {
private static Pattern outerPattern = Pattern.compile("[^\\(]*(\\([^\\)]*\\))[^\\(]*");
private static Pattern innerPatter = Pattern.compile("\\(([^\\s\\),]+)|,\\s+([^\\s\\),]+)|([^\\s\\),]+)\\)");

public static void main(String[] args) {
List<List<String>> outerResult = new ArrayList<List<String>>();
String input = "foo (a1, a2, a3, a4 and a5) bar (b1, b2 and b3) more (c1 or c2) ignored (d1, d2) text (e1) the end";
Matcher outerMatcher = outerPattern.matcher(input);
while (outerMatcher.find()) {
outerResult.add(processOuter(outerMatcher));
}
System.out.println(outerResult);
}

private static List<String> processOuter(Matcher outerMatcher) {
List<String> innerResult = new ArrayList<String>();
Matcher innerMatcher = innerPatter.matcher(outerMatcher.group(1));
while (innerMatcher.find()) {
innerResult.add(processInner(innerMatcher));
}
return innerResult;
}

private static String processInner(Matcher innerMatcher) {
for (int i = 1; i <= innerMatcher.groupCount(); i++) {
String group = innerMatcher.group(i);
if (group != null) {
return group;
}
}
return null;
}
}

输出:

[[a1, a2, a3, a4, a5], [b1, b2, b3], [c1, c2], [d1, d2], [e1]]

此外,使用这些链接可以更好地理解上面的示例:

但请注意,您可能需要调整正则表达式以真正匹配您的用例。

关于java - 如何在java中将括号内的代码分组为一个单元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32443699/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com