我希望这个 Java 正则表达式匹配两个括号之间的所有文本:
%(.*?)\((.*?)(?!\\)\)
显示评论:
%(.*?) # match all text that immediately follows a '%'
\( # match a literal left-paren
(.*?) # match all text that immediately follows the left-paren
(?!\\) # negative lookahead for right-paren: if not preceded by slash...
\) # match a literal right-paren
但它没有(如本测试所示)。
对于此输入:
%foo(%bar \(%baz\)) hello world)
我期待%bar \(%baz\)
但看到%bar \(%baz\
(没有逃脱的右括号)。我猜我对负前瞻结构的使用在某种程度上是不正确的。有人可以解释我的正则表达式的问题吗?谢谢。