首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python RegEx匹配换行符

Python RegEx匹配换行符
EN

Stack Overflow用户
提问于 2010-09-17 17:14:01
回答 1查看 38.6K关注 0票数 9

我有以下正则表达式:

代码语言:javascript
复制
[0-9]{8}.*\n.*\n.*\n.*\n.*

我已经在Expresso中对我正在处理的文件进行了测试,匹配成功。

我希望匹配以下内容:

  • 参考数字8个数字长
  • 任意字符,任意次数
  • 换行
  • 任意字符,任意次数
  • 换行
  • 任意字符,任意次数
  • 换行
  • 任意字符,任意次数
  • 任意字符,任意次数

我的python代码是:

代码语言:javascript
复制
for m in re.findall('[0-9]{8}.*\n.*\n.*\n.*\n.*', l, re.DOTALL):
       print m

但是没有生成匹配,正如Expresso中所说的那样,存在400+匹配,这是我所期望的。

我在这里错过了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-09-17 17:23:18

不要使用re.DOTALL,否则点也会匹配换行符。还可以对正则表达式使用原始字符串(r"..."):

代码语言:javascript
复制
for m in re.findall(r'[0-9]{8}.*\n.*\n.*\n.*\n.*', l):
   print m

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

所以问题是,你是这样读文件的吗:

代码语言:javascript
复制
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())?在这种情况下,正则表达式当然不能工作。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3734023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档