Python正则表达式能计数括号吗?
我在想,Python的正则表达式能不能进行计数。比如说,它能不能跳过嵌套的括号?我知道Java做不到这一点,所以我在想Python会不会是个更好的选择。
1 个回答
2
基本的正则表达式是严格定义的,它们可以用有限状态自动机来表示。没有任何正则表达式能做到这一点。因此,通常情况下,正则表达式不能使用计数器。这是抽 pumping 引理的一个结果,正如@chrisaycock所指出的。无论使用什么编程语言(以及用来表达正则表达式的语言),这是不可能的……
不过,正则表达式可以用来列举所有的匹配项。也就是说,你可以数一数有多少个打开的(
和关闭的)
括号。但你无法验证这些括号是否符合规则(比如没有打开括号就出现关闭括号等等)。
如果要处理像嵌套括号这样的情况,就需要使用上下文无关文法,比如PLY。