'{m}'和'{m,n}'之间的区别是什么?'在http://docs.python.org/library/re.html它说'{m,n}?'匹配范围在m到n倍的数字,但它不是一个贪婪的搜索。因此,如果它不是一个贪婪的搜索,不管它是什么,它只能匹配m?python正则表达式
3
A
回答
14
{m,n}?
将优选地仅匹配m
重复,但是如果长时间匹配需要,它将根据需要扩展至n
重复。
比较^x{2}y$
和^x{2,4}?y$
:
前者将失败xxxy
而后者将匹配。
总结:
x{m}
:比赛x
正是m
倍。
x{m,n}
:尝试匹配x
n
倍,但如果导致整体匹配失败,还给根据需要,但比赛至少m
倍(贪婪量词)。
x{m,n}?
:尝试匹配x
m
倍,但如果导致整体匹配失败,根据需要展开,但比赛顶多n
倍(懒惰量词)。
1
这是最容易看到使用两个匹配的组的例子:
>>> re.match(r'(x{1,3}?)(.*)', 'xxxxx').groups()
('x', 'xxxx')
>>> re.match(r'(x{1,3})(.*)', 'xxxxx').groups()
('xxx', 'xx')
换句话说,{N,M}和{N,M}?都能匹配完全相同的东西;当不止一种方法匹配时,它发生的变化就是分组发生的地方。
相关问题
- 1. 正则表达式正则表达式正则表达式使用正则表达式,但不是与Python
- 2. 正则表达式python表达式
- 3. Python的正则表达式:“喜欢”正则表达式模式?
- 4. Python正则表达式子
- 5. Python row.get(正则表达式)
- 6. Python 3.3正则表达式?
- 7. Python和正则表达式
- 8. Python - 正则表达式dir
- 9. python unicode正则表达式
- 10. Python正则表达式
- 11. 正则表达式和Python
- 12. 正则表达式在Python
- 13. Python 2.6正则表达式
- 14. 的Python:正则表达式
- 15. Python正则表达式(\ .. +)?
- 16. python sql正则表达式
- 17. Python的正则表达式
- 18. Python的正则表达式?
- 19. 正则表达式^ $ Python?
- 20. IPv6正则表达式python
- 21. Python。正则表达式
- 22. Python正则表达式Findall
- 23. Python和正则表达式
- 24. Python的正则表达式
- 25. Python正则表达式Findall
- 26. 正则表达式python
- 27. Python Unicode正则表达式
- 28. python re.sub正则表达式
- 29. Python正则表达式findall
- 30. 正则表达式,Python
我不确定Python风格的正则表达式,但大多数正则表达式(以及大多数编程语言)都有一些功能相同的构造。这不是一个,但如果你找到它们,你不应该感到惊讶。 – 2011-02-03 07:20:20
@chris:如果有疑问,可以使用在线工具比较几种语言的正则表达式系统:PHP和javascript获得http://regex.larsolavtorvik.com/,而python获得http://ksamuel.pythonanywhere.com。在这里你可以很容易地看到它不是一个新的构造。 – 2012-01-28 15:01:36