Python RegEx匹配换行符

我有以下正则表达式:

[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() )? 在这种情况下,当然,正则表达式无法工作。

    链接地址: http://www.djcxy.com/p/76883.html

    上一篇: Python RegEx Matching Newline

    下一篇: Extracting text from HTML file using Python