java - 获取文本直到 Java 中的第二个括号

标签 java regex string

输入:

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

Regex demo


注意

我使用 if 而不是 while 只是为了获取第一个输入,如果你想获得所有的输入,你可以使用 while 代替。

关于java - 获取文本直到 Java 中的第二个括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43902400/

相关文章:

java - 将字符串转换为数学对象

java - 在java中将匹配字段从一个对象列表复制到另一个对象列表

java - 如何在 GWT 上添加外部 JavaScript 库?

java - Java 正则表达式中的新行和美元符号

javascript - 使用 javascript 更改字符串

Python正则表达式提取字符串末尾的可选数字

java - 使用 MultidexApplication 可以解决代码太大错误吗

regex - 如何使用正则表达式在powershell中获取字符和字符串之间的子字符串

php - 正则表达式不适用于密码?不知道为什么

python - 为什么我的正则表达式与我需要的电话号码不匹配?