输入:
str = "(samebib(A, B, 4.0) :- author(A, UniqueVar1), author(B, UniqueVar1), !)"
预期操作:
str = "samebib"
因为我需要前 2 个左括号之间的文本。
尝试过的代码:
str.replaceAll("[\\])},].*", "")
操作:
str = "(samebib(A"
我不擅长正则表达式。拜托,任何建议都会有所帮助。
最佳答案
尝试将此正则表达式 \((.*?)\(
与这样的模式一起使用:
String input = "(samebib(A, B, 4.0) :- author(A, UniqueVar1), author(B, UniqueVar1), !)";
Pattern p1 = Pattern.compile("\\((.*?)\\(");
Matcher m = p1.matcher(input);
if (m.find()) {
System.out.println(m.group(1));
}
输出
samebib
注意
我使用 if 而不是 while 只是为了获取第一个输入,如果你想获得所有的输入,你可以使用 while 代替。
关于java - 获取文本直到 Java 中的第二个括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43902400/