如何处理正则表达式中的多个括号?

npi*_*nti 1 java regex

我有这种类型的字符串:

文字(更多文字)

我想要做的是有一个正则表达式来提取字符串的“更多文本”部分。到目前为止,我一直在使用这个正则表达式:

"^.*\\((.*)\\)$"
Run Code Online (Sandbox Code Playgroud)

尽管它适用于许多情况,但如果我有这样的东西,它似乎会失败:

文字(更多文字(甚至更多文字))

我得到的是:更多的文字)

我想得到的是:更多的文字(甚至更多的文字)(基本上是最外面一对括号的内容。)

Mat*_*hen 6

除了惰性量化,另一种方法是:

"^[^(]*\\((.*)\\)$"
Run Code Online (Sandbox Code Playgroud)

在这两个正则表达式中,"\\("在匹配组之前都有一个明确指定的左括号(,带有 Java 字符串转义)。在原文中,在此.*之前有一个,允许任何内容(包括其他左括号)。在我的情况下,这里不允许使用左括号(有一个否定字符类),因此在最外层明确指定了左括号。