web-dev-qa-db-ja.com

正規表現一致の周りの数行をキャプチャする方法は?

一致する行のいくつかの行を一致させる正規表現を検索しています。例えば:

ABCDEFGHADEFGH
ABCDEFGHADEFGH
ABCDEFGHDEFGHABCDEFGH
ABCDEFGHDEFGHABCDEFGH
ABCDEFGHABCDEFGHABCDEFGH
ABCDEFGHABCDEFGHABCDEFGH
XXXXXXXX

XXXXXXXXの上の2行をキャプチャします。

任意の助けいただければ幸いです。注:with Python using library re

8
takobaba

次のRegExは、XXXXXXXX行の前の可変量の行をテストし、それらを最初のキャプチャグループに返します。

_((.*\n){2})XXXXXXXX_

  1. _(.*\n)_は、改行である_\n_で終わる文字列をテストします。
  2. _{2}_はこれを2回定量化します。
  3. _()_を使用すると、すべての行が1つのキャプチャグループに含まれるようになります。
  4. XXXXXXXXは、テキストが終了する必要がある文字列です。

Pythonでは、p.match(regex)[0]を使用して最初のキャプチャグループを返すことができます。

15
erikgaal

Erikgaalの回答に追加して、xxx​​xxxの前に余分な。*を使用して、タブ/空白に一致させます。

((。*\n){2})。* xxxxxxx