ホームページ > バックエンド開発 > Python チュートリアル > Python の「re.match」と「re.search」の主な違いは何ですか?

Python の「re.match」と「re.search」の主な違いは何ですか?

DDD
リリース: 2024-12-22 12:54:17
オリジナル
607 人が閲覧しました

What's the Key Difference Between Python's `re.match` and `re.search`?

re.match と re.match の主な違いを理解する

Python の re モジュールの match() 関数と search() 関数パターンマッチングにおいて異なる役割を果たします。主な違いはアンカー ポイントにあります。

re.match

match() 関数は、入力文字列の先頭にパターンが存在するかどうかを検証します。文字列の残りの部分は考慮されず、先頭のみで一致することが保証されます。これは、パターンが文字列内の他の場所に現れたとしても、re.match は結果を返さないことを意味します。

re.search

対照的に、re.search は入力文字列全体を調べて、パターンの出現を検索します。文字列内のどこかでパターンが見つかった場合は、一致オブジェクトを返します。この関数は、文字列の先頭にパターンを必要としないため、re.match より制限が緩くなっています。

重要な考慮事項

使用する関数を選択するときは、次の点を考慮してください。以下:

  • パターンが最初に出現することを確認する必要がある場合は、re.match を使用します。 string.
  • 文字列内の位置に関係なく、パターンの出現を検索する場合は、re.search を使用します。
  • re.match は、通常、re.search より高速です。

実際の例

違いとして、次の文字列を考えてみましょう。

"This is a sentence with multiple words."
ログイン後にコピー

パターン "This" で re.match を使用すると成功しますが、文字列の先頭に "This" が表示されるため re.search を使用しても成功します。ただし、パターン「with」を検索すると、「with」が文字列の先頭にならないため、re.search のみが結果を返します。

次に、改行を含む文字列を考えてみましょう:

"Line 1\nLine 2"
ログイン後にコピー

re.match("^Line 2", string, re.MULTILINE) の使用は失敗します。「^」は文字列の先頭にアンカーされており、文字列の後には一致しないためです。改行。ただし、 re.search("^Line 2", string, re.MULTILINE) は、 re.search には同じ位置制約がないため成功します。

以上がPython の「re.match」と「re.search」の主な違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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