我有一个包含
的文件Line1
Line2
Line3
Line4
并且在Python程序中我正在搜索
Line1
Line2
Line3
程序是
import re
file = open("blah.log","r")
file_contents = file.read()
pattern='''Line1
Line2
Line3'''
matchObj = re.search(pattern, file_contents, re.M|re.I)
if matchObj:
print matchObj.group(0)
else:
print "No match!!"
但是,即使文件中包含模式,也不会显示匹配项。
但是如果
file_contents = '''Line1
Line2
Line3
Line4''' # not reading from the file
现在,它与正则表达式模式匹配。
这是什么原因?
如何使程序能够从文件中读取内容?
答案 0 :(得分:2)
由于文件中的行由0.3
分隔,因此您搜索的模式应对此予以考虑。
为了方便起见,您仍然可以使用三引号将您要搜索的字符串初始化,然后使用epsilon
方法用'\r\n'
替换所有出现的str.replace()
:< / p>
'\n'
此外,如果您需要的只是一个子字符串匹配项,则可以使用'\r\n'
运算符来代替更昂贵的正则表达式匹配项:
pattern='''Line1
Line2
Line3'''.replace('\n', '\r\n')
答案 1 :(得分:1)
文件中的换行符可以是'\ n','\ r'或'\ r \ n'。这取决于操作系统。为了安全起见,请尝试与所有换行符匹配。
pattern='''Line1(\n|\r|\r\n)Line2(\n|\r|\r\n)Line3'''