2 つの文字列間の一致を抽出する正規表現
特定の開始マーカーと終了マーカーで囲まれた複数行の文字列を含む大きなログ ファイルがある場合、目標は、そのような最短の文字列のみを抽出して出力することです。ただし、開始マーカーはファイル内の他の場所で使用されているため、単純な正規表現では十分ではありません。
これに対処するには、次の正規表現を使用できます:
(start((?!start).)*?end)
この正規表現は次のとおりに一致します
を使用するPython の re.findall メソッドと単一行修飾子 (re.S) を使用すると、入力ファイルからそのような文字列をすべて取得できます:
<code class="python">import re text = """ start spam start rubbish start wait for it... profit! here end start garbage start second match win. end """ matches = re.findall('(start((?!start).)*?end)', text, re.S) print(matches)</code>
これにより、目的の結果が出力されます:
['start wait for it... profit! here end', 'start second match win. end']
以上が正規表現を使用してログ内の 2 つの文字列間の一致を抽出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。