'{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