ホームページ > バックエンド開発 > Python チュートリアル > 正規表現を使用してPythonで2つの文字列間の最短一致を抽出する方法?

正規表現を使用してPythonで2つの文字列間の最短一致を抽出する方法?

DDD
リリース: 2024-10-24 02:56:29
オリジナル
384 人が閲覧しました

How to Extract Shortest Matches Between Two Strings in Python with Regex?

2 つの文字列間の最短一致の抽出

大きなログ ファイルを扱う場合、2 つの文字列間の特定のデータを抽出するのは困難な場合があります。ファイル全体で開始文字列と終了文字列が複数回出現し、目的の出力に最短一致が含まれる場合、タスクはより複雑になります。

正規表現ソリューション

この問題に取り組むには、正規表現アプローチを使用できます。理想的な正規表現は、開始文字列と終了文字列の間のテキストをキャプチャし、最も短い一致を優先します。

指定された正規表現 (start((?!start).)*?end) は、次の基準を満たしています。

  • 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) の場合、効率が非常に重要になります。次の最適化を適用できます。

    バッファベースのアプローチを利用して、ファイル全体がメモリに読み込まれることを回避します。
  • 複数のファイルを処理するには、re.MULTILINE などの正規表現エンジン フラグを使用します。ライン入力。

以上が正規表現を使用してPythonで2つの文字列間の最短一致を抽出する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート