我正在尝试匹配字符串 Article
后跟一个数字(一个或多个数字)的所有出现,不是 后跟一个左括号。在 Sublime Text 中,我使用以下正则表达式:
Article\s[0-9]++(?!\()
搜索以下字符串:
Article 29
Article 30(1)
这与 Article 30(1)
不匹配(如我所料),但 Article 29
和 Article 1
。
尝试在 Python (3) 中使用
import re
article_list = re.findall(r'Article\s[0-9]++(?!\()', "Article 30(1)")
我收到以下错误,因为我正在使用 Python 正则表达式不支持的(嵌套)所有格量词。有什么方法可以匹配我想要(不)在 Python 中匹配的内容吗?
最佳答案
您还可以使用 (?=(...))\1
围绕您要匹配的内容模拟原子组 (?>...)
> 解决方法:
(?=(Article\s[0-9]+))\1(?!\()
(前瞻自然地表现得像一个原子组,您所需要的只是一个捕获和一个反向引用)
关于python - 替代python中的所有格量词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44458122/