Python正则表达式匹配换行符
我有以下正则表达式:Python正则表达式匹配换行符,python,regex,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 但
[0-9]{8}.*\n.*\n.*\n.*\n.*
我已经在Expresso中对我正在使用的文件进行了测试,匹配成功
我想匹配以下内容:
- 参考编号8编号长
- 任意字符,任意次数
- 新线
- 任意字符,任意次数
- 新线
- 任意字符,任意次数
- 新线
- 任意字符,任意次数
- 新线
- 任意字符,任意次数
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
或者您正在处理单行(
对于myfile中的行:
或myfile.readlines()
)?在这种情况下,正则表达式当然不能工作。Hi,是的,我在windows上运行python,但文件来自unix环境。文件的来源不太重要。问题是您是立即打开整个文件还是使用迭代器。Python迭代器将迭代新行字符。