是否有與findall
方法相關的BeautifulSoup limit=X
參數的正則表達式?我的意思是,如何找到有問題的第一個X字,然後中斷代碼執行?謝謝如何限制正則表達式的findall()方法
1
A
回答
3
您可以使用re.finditer
,因爲它返回一個迭代器而不是一次生成的所有值:
In [21]: strs="12345678"
In [22]: it=re.finditer("\d",strs)
In [23]: [next(it).group(0) for _ in xrange(4)] #returns only 4 mathces
Out[23]: ['1', '2', '3', '4']
雖然這可能會引發StopIteration
錯誤時的限制比匹配的數量更大。一個簡單的解決方法是使用異常處理或使用itertools.isclice
:
In [26]: def limiter(strs,pattern,limit):
it=re.finditer(pattern,strs)
try:
for _ in xrange(limit):
yield next(it).group(0)
except StopIteration:
pass
....:
In [27]: list(limiter("12345","\d",3))
Out[27]: ['1', '2', '3']
In [28]: list(limiter("12345","\d",6))
Out[28]: ['1', '2', '3', '4', '5']
In [29]: list(limiter("12345","\d",10))
Out[29]: ['1', '2', '3', '4', '5']
幫助上re.finditer
:
In [24]: re.finditer?
Type: function
String Form:<function finditer at 0xb74114c4>
File: /usr/lib/python2.7/re.py
Definition: re.finditer(pattern, string, flags=0)
Docstring:
Return an iterator over all non-overlapping matches in the
string. For each match, the iterator returns a match object.
Empty matches are included in the result.
4
使用re.finditer
和itertools.islice
:
from itertools import islice
import re
limit = 2
for x in islice(re.finditer(r'\d+', '1 2 33'), limit):
print(x.group())
作爲一個功能:
def findall_limiter(pattern, string, flags=0):
return islice(re.finditer(pattern, string, flags), limit)
例如。
for match in findall_limiter(r'\d+', '1 2 33', 2):
# do stuff
+1
其實這是更好的方法,因爲當你沒有「限制」匹配時它不會中斷 – jamylak 2013-04-26 11:59:15
相關問題
- 1. 如何讓Python的findall正則表達式方法包含
- 2. Python正則表達式Findall
- 3. Python正則表達式Findall
- 4. Python正則表達式findall
- 5. Python findall正則表達式
- 6. 的Python的findall和正則表達式
- 7. Python的正則表達式的findall或
- 8. 限制在正則表達式表達
- 9. python中的正則表達式,findall
- 10. Python的正則表達式findall
- 11. 正則表達式findall邏輯或
- 12. Python:正則表達式findall子類?
- 13. 澄清Python正則表達式和findall()
- 14. python findall,正則表達式,unicode
- 15. Python正則表達式findall與變量
- 16. 限制_末的正則表達式
- 17. 限制複雜的正則表達式
- 18. 對nginx正則表達式的限制?
- 19. 正則表達式方法
- 20. 如何使用findall打印正則表達式的結果?
- 21. 如何限制正在檢測太多的正則表達式?
- 22. 正則表達式,字符數限制
- 23. 限制正則表達式字邊界
- 24. 正則表達式限制零
- 25. 正則表達式與限制
- 26. 正則表達式與長度限制
- 27. 限制正則表達式匹配
- 28. 正則表達式來限制數字
- 29. Python正則表達式 - 限制結果?
- 30. 正則表達式來限制字符
使用're.finditer'。 – 2013-04-26 11:53:05