[英]Python RegEx Matching Newline
我有以下正則表達式:
[0-9]{8}.*\n.*\n.*\n.*\n.*
我在Expresso中測試了我正在使用的文件並且匹配成功。
我想匹配以下內容:
我的python代碼是:
for m in re.findall('[0-9]{8}.*\n.*\n.*\n.*\n.*', l, re.DOTALL):
print m
但是沒有比賽產生,正如Expresso所說,有400多場比賽,這是我所期待的。
我在這里缺少什么?
不要使用re.DOTALL
否則點也會匹配換行符。 也可以使用原始字符串( r"..."
)表示正則表達式:
for m in re.findall(r'[0-9]{8}.*\n.*\n.*\n.*\n.*', l):
print m
但是, 如果您已將整個文件作為二進制文件讀取到內存中作為一個大字符串 ,那么您的版本仍應該有效(盡管效率非常低)。
所以問題是,你是否正在閱讀這樣的文件:
with open("filename","rb") as myfile:
mydata = myfile.read()
for m in re.findall(r'[0-9]{8}.*\n.*\n.*\n.*\n.*', mydata):
print m
或者您正在使用單行( for line in myfile:
或myfile.readlines()
)? 在這種情況下,正則表達式無法正常工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.