Python re.match() メソッド
re.match()は Pythonreモジュール内で使用される文字列の先頭からマッチングするパターンの関数。
文字列の先頭が指定された正規表現にマッチする場合は、マッチオブジェクトを返します。それ以外の場合はNone。
単語の意味: matchはマッチ、一致するという意味です。
基本構文とパラメータ
re.match()はモジュールレベルの関数であり、直接reモジュールから呼び出します。
構文形式
re.match(pattern, string, flags=0)
パラメータの説明
- pattern:
- 型:文字列 (str)
- 説明:マッチングする正規表現パターン。
- string:
- 型:文字列 (str)
- 説明:マッチング対象の文字列。
- flags:
- 型:整数 (int, オプション)
- 説明:正規表現フラグ。
関数の説明
- 戻り値: 文字列の先頭がマッチする場合、
matchオブジェクトを返します。それ以外の場合はNone。 - 注意:
re.match()文字列の先頭からのみマッチングし、文字列の途中はスキャンしません。
例
例を通してre.match()の使い方をマスターしましょう。
例1:基本的な使い方 - 先頭でのマッチング
例
import re
text = "Pythonは強力なプログラミング言語です"
# 先頭から "Python" をマッチング
result = re.match(r'Python', text)
if result:
print("匹配成功:", result.group())
print("匹配位置:", result.start(), "-", result.end())
text = "Pythonは強力なプログラミング言語です"
# 先頭から "Python" をマッチング
result = re.match(r'Python', text)
if result:
print("匹配成功:", result.group())
print("匹配位置:", result.start(), "-", result.end())
実行結果の予想:
匹配成功: Python 匹配位置: 0 - 6
例2:先頭が一致しない場合
例
import re
text = "私はPython"
# 先頭から "Python" をマッチング - 失敗する
result = re.match(r'Python', text)
if result:
print("匹配成功:", result.group())
else:
print("マッチ失敗: 文字列の先頭はPythonではありません")
text = "私はPython"
# 先頭から "Python" をマッチング - 失敗する
result = re.match(r'Python', text)
if result:
print("匹配成功:", result.group())
else:
print("マッチ失敗: 文字列の先頭はPythonではありません")
実行結果の予想:
匹配失败: 字符串开头不是Python
例3:文字列の先頭に続く内容をマッチング
例
import re
text = 2024年は特別な年です
# 年の形式をマッチング (4桁の数字)
result = re.match(r'\d{4}', text)
if result:
print("匹配到年份:", result.group())
text = 2024年は特別な年です
# 年の形式をマッチング (4桁の数字)
result = re.match(r'\d{4}', text)
if result:
print("匹配到年份:", result.group())
実行結果の予想:
匹配到年份: 2024
例4:グループを使用してデータを抽出
例
import re
text = "Hello World"
# "Hello" の後にスペースと "World" が続くことをマッチング
result = re.match(r'(Hello) (World)', text)
if result:
print("完整匹配:", result.group())
print("第1组:", result.group(1))
print("第2组:", result.group(2))
text = "Hello World"
# "Hello" の後にスペースと "World" が続くことをマッチング
result = re.match(r'(Hello) (World)', text)
if result:
print("完整匹配:", result.group())
print("第1组:", result.group(1))
print("第2组:", result.group(2))
実行結果の予想:
完整匹配: Hello World 第1组: Hello 第2组: World
その他の拡張