簡體   English   中英

Python RegEx匹配換行符

[英]Python RegEx Matching Newline

我有以下正則表達式:

[0-9]{8}.*\n.*\n.*\n.*\n.*

我在Expresso中測試了我正在使用的文件並且匹配成功。

我想匹配以下內容:

  • 參考編號8長
  • 任何角色,任何次數
  • 新隊
  • 任何角色,任何次數
  • 新隊
  • 任何角色,任何次數
  • 新隊
  • 任何角色,任何次數
  • 新隊
  • 任何角色,任何次數

我的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM