例子:
例:
import re
string = 'blah blah 12234 (12) (23) (34)'
print re.findall(r'\((\d)+)\)', string)
打印:
[('12', '2'), ('23', '3'), ('34', '4')]
而不是预期的
['12', '23', '34']
当然,在这种情况下,只需更改内部括号即可解决此问题:
解决方案
>>> print re.findall(r'\((\d+)\)', s)
['12', '23', '34']
>>>
相反,如果您仅在匹配表达式位于平衡的括号内时才讨论匹配,那么对您来说是个坏消息:正则表达式语言的功能还不够强大(因为这种语法不是“正则”的) 。这不是Python的实现问题…这是一个即使在理论上使用正则表达式也无法解决的问题(换句话说,这不是我们不知道如何解决它……我们知道它无法解决)。
您需要编写明确的Python代码来解析任意嵌套的语法(如果您关心嵌套级别)。正则表达式是DFSA,无法“计算”级别;需要内存和至少一个PDA。
本文链接:https://my.lmcjl.com/post/15246.html
展开阅读全文
4 评论