2 つの文字列間の最短一致の抽出
大きなログ ファイルを扱う場合、2 つの文字列間の特定のデータを抽出するのは困難な場合があります。ファイル全体で開始文字列と終了文字列が複数回出現し、目的の出力に最短一致が含まれる場合、タスクはより複雑になります。
正規表現ソリューション
この問題に取り組むには、正規表現アプローチを使用できます。理想的な正規表現は、開始文字列と終了文字列の間のテキストをキャプチャし、最も短い一致を優先します。
指定された正規表現 (start((?!start).)*?end) は、次の基準を満たしています。
Python を使用した実装
Python では、re モジュールはこの正規表現を適用するために必要な関数。以下のコードは、re.findall:
<code class="python">import re text = "start spam\nstart rubbish\nstart wait for it...\n profit!\nhere end\nstart garbage\nstart second match\nwin. end" matches = re.findall('(start((?!start).)*?end)', text, re.S) for match in matches: print(match)</code>
Output:
start wait for it... profit! here end start second match win. end
大きなファイルに関する追加の考慮事項
非常に大きなファイル (例: 2GB) の場合、効率が非常に重要になります。次の最適化を適用できます。以上が正規表現を使用してPythonで2つの文字列間の最短一致を抽出する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。