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

时间:2017-05-10 20:43:07

标签: java regex string

输入:

str = "(samebib(A, B, 4.0) :- author(A, UniqueVar1), author(B, UniqueVar1), !)"

预计op:

str = "samebib"

正如在我需要前两个开放式paranthesis之间的文本。

Code Tried:

str.replaceAll("[\\])},].*", "")

OP:

str = "(samebib(A"

我在正则表达方面不强。请,任何建议都会有所帮助。

2 个答案:

答案 0 :(得分:3)

尝试使用此正则表达式\((.*?)\(,其模式如下:

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而不是只是为了获取第一个输入,如果你想得到你可以使用的所有输入。

答案 1 :(得分:2)

最简单的方法是:

String[] parts = str.split("\\(");
System.out.println(parts[1]);