我有这种类型的字符串:
文字(更多文字)
我想要做的是有一个正则表达式来提取字符串的“更多文本”部分。到目前为止,我一直在使用这个正则表达式:
"^.*\\((.*)\\)$"
Run Code Online (Sandbox Code Playgroud)
尽管它适用于许多情况,但如果我有这样的东西,它似乎会失败:
文字(更多文字(甚至更多文字))
我得到的是:更多的文字)
我想得到的是:更多的文字(甚至更多的文字)(基本上是最外面一对括号的内容。)
除了惰性量化,另一种方法是:
"^[^(]*\\((.*)\\)$"
Run Code Online (Sandbox Code Playgroud)
在这两个正则表达式中,"\\("在匹配组之前都有一个明确指定的左括号(,带有 Java 字符串转义)。在原文中,在此.*之前有一个,允许任何内容(包括其他左括号)。在我的情况下,这里不允许使用左括号(有一个否定字符类),因此在最外层明确指定了左括号。