Pythonで後方一致の判定をする方法

Pythonで後方一致の判定をする方法

Pythonで後方一致(サフィックスマッチ)の判定をする方法には、いくつかのアプローチがあります。
ここでは、str オブジェクトのメソッドや、正規表現、またはカスタム関数を使用した方法について詳しく説明します。

1. str.endswith() メソッドを使用する

Pythonの標準ライブラリには、文字列の後方一致を簡単にチェックするための str.endswith() メソッドがあります。
このメソッドは、文字列が指定されたサフィックスで終わっているかどうかを判定します。
基本的な使い方は以下の通りです。

# 文字列がサフィックスで終わっているかを確認
text = "example.txt"
suffix = ".txt"

if text.endswith(suffix):
  print("後方一致しています")
else:
  print("後方一致していません")

このコードでは、text が指定された suffix で終わっているかを判定し、一致する場合には "後方一致しています" と出力されます。

2. str.endswith() メソッドの複数サフィックス対応

str.endswith() メソッドは、タプルを使って複数のサフィックスに対する後方一致をチェックすることもできます。
次の例では、いくつかのサフィックスのいずれかで文字列が終わっているかを確認します。

# 複数のサフィックスで確認
text = "example.docx"
suffixes = (".txt", ".docx", ".pdf")

if text.endswith(suffixes):
  print("サフィックスのいずれかに一致しています")
else:
  print("サフィックスのいずれにも一致していません")

この例では、text が .txt、.docx、または .pdf のいずれかで終わっているかを確認します。

3. 正規表現を使用する方法

re モジュールを使用することで、より複雑なパターンに対して後方一致を判定することができます。
正規表現を使ったサフィックスのチェックは、以下のように行います。

import re

# 正規表現による後方一致
text = "example.txt"
pattern = r"\.txt$"  # .txt で終わるパターン

if re.search(pattern, text):
  print("後方一致しています")
else:
  print("後方一致していません")

このコードでは、text が .txt で終わるかを正規表現で判定します。
$ は文字列の終端を示すため、\.txt$ は「.txt で終わる」という意味になります。

4. カスタム関数を使う方法

カスタム関数を定義して後方一致を確認する方法もあります。
例えば、次のような関数を作成して使用します。

def ends_with(text, suffix):
  return text[-len(suffix):] == suffix

# 使用例
text = "example.txt"
suffix = ".txt"

if ends_with(text, suffix):
  print("後方一致しています")
else:
  print("後方一致していません")

この関数 ends_with は、文字列 text の末尾が指定された suffix と一致するかをチェックします。
text[-len(suffix):] で suffix の長さだけ末尾の部分文字列を取得し、それが suffix と一致するかを確認します。

これらの方法を利用することで、Pythonで後方一致を柔軟に判定することができます。
用途に応じて、標準ライブラリのメソッド、正規表現、またはカスタム関数を選んで使用すると良いでしょう。