Python Regex - 捕获匹配和前两行

时间:2018-02-22 09:39:52

标签: regex python-3.x

参考上一个问题 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)

1 个答案:

答案 0 :(得分:3)

您可以使用

re.findall(r'(?:.*\r?\n){2}.*random data.*', s)

请注意,您无法使用re.DOTALL.*将匹配输入的结尾,您只会获得最后一次出现。

请参阅Python demo

模式详情

  • (?:.*\r?\n){2} - 2次出现的序列
    • .* - 除了换行符之外的任何0 +字符,尽可能多(一行)
    • \r?\n - 一行结尾(CRLFLF
  • .*random data.* - 包含random data子字符串的行。

请参阅regex demo