Python Regex适用于任何类型的括号

时间:2016-11-09 18:38:51

标签: python regex

有没有办法采用正则表达式,例如

\(.*\)

并使其正确识别任何类型的括号对,如

(\(|\{|\[).*(\)|\}|\])

没有做出错误的匹配,例如\(.*\]

我专门使用Python,但它应该以任何语言工作。

3 个答案:

答案 0 :(得分:2)

没有。常规语言无法正确处理嵌套。你需要一个合适的解析器。

答案 1 :(得分:0)

没有神奇的方法可以告诉正则表达式将特定字符与其他字符匹配(如果它是完全相同的字符/字符串,则可以进行反向引用,但事实并非如此)。

你能做的就是写一个"复杂的" (不是那么)表达:

((?:\(.*\))|(?:\{.*\})|(?:\[.*\]))

答案 2 :(得分:0)

((?:\([^()]*\))|(?:\{[^{}]*\})|(?:\[[^[\]]*\]))

更加笨拙,但与包含.*的解决方案不同,这只会在嵌套括号的情况下捕获最内层的括号。在一对括号之间,除了括号本身[^{}]之外,一切都是允许的,甚至是换行符。

.*是贪婪的,它会将两对括号作为一组捕捉,如(ab)cd(ef),甚至混乱对并匹配(ab )cd)例如。

要捕获包含外部括号的组,例如(ab(cd)ef),我认为不可能使用正则表达式。