如何在正则表达式匹配周围捕获几行?

tak*_*aba 13 regex python

我正在寻找一个正则表达式来匹配匹配行上的几行。例如:

ABCDEFGHADEFGH
ABCDEFGHADEFGH
ABCDEFGHDEFGHABCDEFGH
ABCDEFGHDEFGHABCDEFGH
ABCDEFGHABCDEFGHABCDEFGH
ABCDEFGHABCDEFGHABCDEFGH
XXXXXXXX
Run Code Online (Sandbox Code Playgroud)

我想捕获 XXXXXXXX 上方的 2 行。

任何帮助,将不胜感激。注意:使用 Python 库 re

小智 19

以下 RegEx 测试行之前的可变XXXXXXXX行数,并在第一个捕获组中返回它们。

((.*(\n|\r|\r\n)){2})XXXXXXXX

  1. (.*(\n|\r|\r\n))测试以换行符结尾的字符串。(\n对于 Unix,\r对于旧的 Mac OS,\r\n\对于 Windows)
  2. {2} 将此量化 2 次。
  3. () 确保所有行都在一个捕获组中。
  4. XXXXXXXX 是文本必须以结尾的字符串。

现在在 Python 中,您可以使用p.match(regex)[0]返回第一个捕获组。

  • 请注意这可能会导致 Windows 出现问题。如果是这样,请尝试使用 `\r\n` 而不是仅仅使用 `\n`。 (4认同)