【发布时间】:2018-04-13 15:12:30
【问题描述】:
我正在尝试制作一个仅在有嵌套括号时才匹配中间括号的正则表达式。例如,如果您输入 x(x+3(x+3)),我希望它只匹配 (x+3)。我的程序中已经有几个涉及括号的正则表达式,我发现它们总是匹配他们找到的第一个括号实例。在上面的例子中,我的正则表达式匹配 (x+3(x+3),我想这应该很明显,但我开始时没有考虑。本质上,我希望它匹配一组括号括号内不包含 '(' 或 ')' 字符。
这是我的单括号正则表达式:re.compile(r'(\S+?)')。 我会使用某种否定的环视方法,但我认为这会分别防止开头和结尾出现必要的开括号和右括号字符......
我正在使用 Python。另外,当我说“括号”时,我的意思是括号,但在英式英语中,我们说括号:)
提前致谢!
【问题讨论】:
-
可能类似于
\(.*((\.*\)).*\),使用捕获组?这很可能不是常规语法。您可能必须改为指定上下文无关语法。 -
这个
(\([^()]+\))?应该工作..见regexr.com/3nsfg -
@PatrickArtner
[^()]我想...