我有这种类型的字符串:
文字(更多文字)
我想要做的是使用一个正则表达式来提取字符串的“更多文本”部分。到目前为止,我一直在使用这个正则表达式:
"^.*\\((.*)\\)$"
虽然它适用于很多情况,但如果我有这样的东西,它似乎会失败:
text(更多的文字(更多的文字))
我得到的是:更多文本)
我想得到的是: 更多文本(更多文本)(基本上是最外面一对括号的内容。)
最佳答案
除了惰性量化,还有一种方式是:
"^[^(]*\\((.*)\\)$"
在两个正则表达式中,在匹配组之前都有一个显式指定的左括号("\\("
,带有 Java String 转义)。在原始版本中,有一个 。 *
在此之前,允许任何东西(包括其他左括号)。在我这里,左括号是不允许的(有一个 negated character class ),所以在最外面明确指定的左括号。
关于java - 如何处理正则表达式中的多个括号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2759770/