python中所有格量词的替代
我试图匹配所有出现的字符串Article
后跟一个数字(单个或多个数字),这些数字后面没有开头的括号。 在Sublime Text中,我使用了以下正则表达式:
Articles[0-9]++(?!()
搜索以下字符串:
Article 29
Article 30(1)
这与Article 30(1)
不符(正如我预期的那样),但Article 29
Article 1
和Article 1
Article 29
不符。
当尝试在Python(3)中使用相同的方法时
import re
article_list = re.findall(r'Articles[0-9]++(?!()', "Article 30(1)")
由于我使用Python正则表达式不支持的(嵌套的)所有格量词,因此我得到以下错误。 有没有什么方法可以匹配我希望它(不)匹配的Python?
Python的re
不支持占有欲量词。 您可以考虑使用Python PyPi正则表达式模块,它支持这种类型的量词。 或者使用以下解决方法。
您需要向前瞻添加数字:
Articles[0-9]+(?![(0-9])
^^^
看到这个正则表达式演示。
或者,使用字边界:
Articles[0-9]+b(?!()
^
看到这个正则表达式演示。
您还可以使用(?=(...))1
解决方法模拟您想要匹配的原子组(?>...)
:
(?=(Articles[0-9]+))1(?!()
(一个先行的行为像一个原子组,所有你需要的是一个捕获和一个反向引用)
链接地址: http://www.djcxy.com/p/76935.html上一篇: Alternative to possessive quantifier in python
下一篇: java regex reluctant quantifier giving greedy quantifier