Python RegEx匹配换行符
我有以下正则表达式:
[0-9]{8}.*n.*n.*n.*n.*
我已经在Expresso中测试了我正在使用的文件并且匹配成功。
我想匹配以下内容:
我的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()
)? 在这种情况下,当然,正则表达式无法工作。