'{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 Unicode正則表達式
- 5. Python和正則表達式
- 6. 正則表達式或Python
- 7. Python正則表達式Findall
- 8. Python - 正則表達式dir
- 9. python re.sub正則表達式
- 10. Python正則表達式
- 11. 正則表達式python 3.4
- 12. Python正則表達式子
- 13. Python的正則表達式?
- 14. python正則表達式appengine
- 15. 正則表達式在Python
- 16. Python的正則表達式
- 17. 在python正則表達式
- 18. Python的正則表達式
- 19. 正則表達式python
- 20. Python 3.3正則表達式?
- 21. 正則表達式在Python
- 22. Python的正則表達式
- 23. Python正則表達式
- 24. Python正則表達式
- 25. Python的正則表達式{
- 26. Python正則表達式findall
- 27. Python findall正則表達式
- 28. Python。正則表達式
- 29. Python正則表達式
- 30. IPv6正則表達式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