参考上一个问题 Python data extract from text file - script stops before expected data match
如何捕捉匹配和前两行? 我试过这个,但得到:
位置0(第1行,第1列)的未终止子模式
output = re.findall('(.*\r\n{2}random data.',f.read(), re.DOTALL)
答案 0 :(得分:3)
您可以使用
re.findall(r'(?:.*\r?\n){2}.*random data.*', s)
请注意,您无法使用re.DOTALL
或.*
将匹配输入的结尾,您只会获得最后一次出现。
请参阅Python demo
模式详情
(?:.*\r?\n){2}
- 2次出现的序列
.*
- 除了换行符之外的任何0 +字符,尽可能多(一行)\r?\n
- 一行结尾(CRLF
或LF
).*random data.*
- 包含random data
子字符串的行。请参阅regex demo。