Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonのre.searchとre.matchの違いとは?正規表現マッチングの使い分けを徹底解説

Pythonのreモジュールには、正規表現でパターンを検索するためのメソッドがいくつか用意されています。その中でもよく使われるのが re.match()re.search() の2つです。どちらもマッチオブジェクトを返すという点では似ていますが、検索範囲に重要な違いがあります。

re.match():文字列の先頭だけをチェックする

re.match() は、パターンが文字列の先頭で一致した場合にのみマッチを返します。文字列の途中にパターンが存在しても、先頭で一致しなければ結果は None になります。

たとえば、文字列「TP Tutorials Point TP」に対してパターン「TP」で match() を呼び出すと、文字列が「TP」で始まっているためマッチします。

コード例

import re

result = re.match(r'TP', 'TP Tutorials Point TP')
print(result.group(0))

実行結果

TP

re.search():文字列全体からパターンを探す

re.search()re.match() と似ていますが、文字列全体を対象にパターンを検索する点が異なります。先頭だけでなく、文字列内のどこにパターンがあっても見つけることができます。

コード例

import re

result = re.search(r'Tutorials', 'TP Tutorials Point TP')
print(result.group(0))

実行結果

Tutorials

この例では、「Tutorials」というパターンが文字列の途中にありますが、search() はそれを問題なく検出できています。もし同じパターンで match() を使うと、先頭で一致しないため None が返される点に注意してください。

両者の違いまとめ

  • re.match():文字列の先頭でのみマッチを判定する。先頭で一致しなければ None を返す。
  • re.search():文字列のどこでもパターンを検索し、最初に一致した箇所を返す。見つからなければ None を返す。

用途に応じて使い分けるのがポイントです。「文字列が特定のパターンで始まるかどうか」を確認したい場合は match()、「文字列中にパターンが含まれているかどうか」を調べたい場合は search() を選びましょう。

  1. 【Python】Tkinterのroot.destroy()とroot.quit()の違いを徹底解説

    PythonのGUIライブラリ「Tkinter」では、アプリケーションを終了する方法として destroy() と quit() の2つのメソッドがよく使われます。似たような役割に見えますが、実際には動作が異なります。この記事では、それぞれの違いをサンプルコード付きでわかりやすく解説します。 root.destroy()とは tkinterのウィンドウオブジェクトに対して destroy() メソッドを呼び出すと、mainloop の処理が終了し、ウィンドウ内のすべてのウィジェットが破棄されます。つまり、ウィンドウそのものが完全に閉じられ、バックグラウンドで動作しているインタプリタ(Tcl/T

  2. Pythonのtkinterとtkinter.ttkウィジェットの違いとは?スタイリング方法を解説

    tkinter.ttkは、tkinterウィジェットのスタイル(見た目)を設定するためのモジュールです。HTML要素にCSSでデザインを適用するように、tkinter.ttkを使うことでtkinterウィジェットの外観を自由にカスタマイズできます。 tkinterウィジェットとtkinter.ttkの主な違い tkinterウィジェットは、ボタン・ラベル・テキスト・スクロールバーなど、基本的なGUI部品を追加するために使用します。一方、tkinter.ttkは標準のtkinterよりも多くの種類のウィジェットをサポートしています。 tkinter.ttkではPlaceやPack()、Grid