Python RegEx匹配换行符

hum*_*ira 8 python regex

我有以下正则表达式:

[0-9]{8}.*\n.*\n.*\n.*\n.*
Run Code Online (Sandbox Code Playgroud)

我在Expresso中测试了我正在使用的文件并且匹配成功.

我想匹配以下内容:

  • 参考编号8长
  • 任何角色,任何次数
  • 新队
  • 任何角色,任何次数
  • 新队
  • 任何角色,任何次数
  • 新队
  • 任何角色,任何次数
  • 新队
  • 任何角色,任何次数

我的python代码是:

for m in re.findall('[0-9]{8}.*\n.*\n.*\n.*\n.*', l, re.DOTALL):
       print m
Run Code Online (Sandbox Code Playgroud)

但是没有比赛产生,正如Expresso所说,有400多场比赛,这是我所期待的.

我在这里缺少什么?

Tim*_*ker 12

不要使用re.DOTALL或点也会匹配换行符.也可以使用原始字符串(r"...")来表示正则表达式:

for m in re.findall(r'[0-9]{8}.*\n.*\n.*\n.*\n.*', l):
   print m
Run Code Online (Sandbox Code Playgroud)

但是,如果您已将整个文件作为二进制文件读取到内存中作为一个大字符串,那么您的版本仍然可以工作(尽管效率非常低).

所以问题是,你是否正在阅读这样的文件:

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
Run Code Online (Sandbox Code Playgroud)

或者您正在使用单行(for line in myfile:myfile.readlines())?在这种情况下,正则表达式无法正常工作.