ホームページ  >  記事  >  バックエンド開発  >  Python 正規表現における貪欲モードと非貪欲モードの使用法と違い

Python 正規表現における貪欲モードと非貪欲モードの使用法と違い

零到壹度
零到壹度オリジナル
2018-04-02 10:54:073109ブラウズ

正規表現は Python に固有のものではなく、多くのプログラミング言語でサポートされる独立した構文のセットです。さまざまな言語で使用される正規表現の構文はまったく同じではありませんが、一般的には似ています。 この記事は、貪欲モードと非貪欲モードの使用法と違いに焦点を当てています。デフォルトでは、正規表現は貪欲モードに従って照合されます。つまり、可能な限り多くのコンテンツと照合されます。例:

Python 正規表現における貪欲モードと非貪欲モードの使用法と違い

上記のコードでは、正規表現の最初の b は単語の先頭と一致することを意味し、その後に文字 b が続きます。これは、文字 b で始まりその後にドットが続く単語と一致することを意味します。任意の文字 (スペースを含む) と一致し、プラス記号 + はその前の文字が 1 回以上出現することを意味し、最後の b は単語の末尾と一致することを意味します。そこで問題は、単語の終わりとして何がカウントされるのかということです。空白文字と句読点はどちらも語尾としてカウントされますが、正規表現はデフォルトで貪欲モードを使用し、可能な限り多くのコンテンツと一致するため、上記のコードはテキスト内の最後の語尾と一致します。図に示すように:

Python 正規表現における貪欲モードと非貪欲モードの使用法と違い

それでは、上記のような代わりに、文字 b で始まる単語のみを一致させるにはどうすればよいでしょうか? Non-greedy モードを使用できます。非貪欲モードは、正規表現で疑問符「?」を使用して完了します。疑問符の前に通常の文字またはサブパターンがある場合、疑問符の前の文字またはサブパターンは、または表示されない場合があります。ただし、+、*、{m,n} などのコンテンツの後に疑問符が続く場合は、非貪欲モード、つまり可能な限り少ないコンテンツと一致することを示します。上記の問題を例として、非貪欲モードに変更します。たとえば:

Python 正規表現における貪欲モードと非貪欲モードの使用法と違い

次のコードは、貪欲モードと非貪欲モードの違いをさらに示しています:

Python 正規表現における貪欲モードと非貪欲モードの使用法と違い

もちろん, この記事の先頭に戻る 文字 b で始まる単語を一致させたいだけであれば、w は文字、数字、またはアンダースコアのみに一致するため、それほど苦労する必要はありません。スペースではありません。例:

Python 正規表現における貪欲モードと非貪欲モードの使用法と違い

関連する推奨事項:

Python での正規表現における貪欲アルゴリズムと非貪欲アルゴリズムの適用

以上がPython 正規表現における貪欲モードと非貪欲モードの使用法と違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。