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

【Python】正規表現を使って文字列内の単語をマッチ・抽出する方法

次のコードは、指定された文字列の中から「meeting」という単語を抽出します。

ここでは肯定の先読み(look-ahead)肯定の後読み(look-behind)アサーションを使用しています。これにより、単語を囲む文字の存在を条件として考慮しつつ、その文字自体はマッチ結果に含めないようにできます。

コード例

import re

s = """https://www.google.com/meeting_agenda_minutes.html"""
result = re.findall(r'(?<=[\W_])meeting(?=[\W_])', s)
print(result)

出力

['meeting']

パターンの解説

  • (?<=[\W_]):後読みアサーション。「meeting」の直前が非単語文字(記号など)またはアンダースコアであることを確認します。
  • meeting:実際にマッチさせたい単語です。
  • (?=[\W_]):先読みアサーション。「meeting」の直後が非単語文字またはアンダースコアであることを確認します。

\W は英数字とアンダースコア以外の任意の1文字に一致します。この例では URL 内の「meeting」の前後に「/」や「_」があるため、条件を満たす部分だけが re.findall() によってリスト形式で返されます。

なお、上記のコードは Python 3 の構文(print(result))で記述しています。Python 2 の場合は print result のように括弧なしで記述してください。

  1. Pythonで正規表現を使って空白文字にマッチさせる方法を解説

    Pythonのreモジュールを使うと、正規表現によって文字列内の空白文字(スペース、タブ、改行など)を簡単に検出できます。空白にマッチさせるには、正規表現パターンとして \s を使用します。以下に具体的なコード例を紹介します。例1:re.search()で最初の空白を検索する次のコードは、指定した文字列の中から最初に現れる空白を1つ検索します。import re result = re.search(r[\s], The Indian Express) print(result)実行結果<re.Match object; span=(3, 4), match= >re.search

  2. Pythonの正規表現で単語以外の文字をマッチさせる方法

    正規表現を使って文字列から「単語以外の文字」を取り出したい場合、Pythonのreモジュールに用意されている特殊シーケンス \W を使うのが最も簡単です。\W は、英字・数字・アンダースコア([^a-zA-Z0-9_])以外のすべての文字に一致します。以下のコードでは、指定した文字列から単語以外の文字をすべて抽出し、そのリストを出力しています。コード例import re s = ab5z8d*$&Y@ regx = re.compile(r\W) result = regx.findall(s) print(result)ポイントとして、パターン文字列の先頭に r を付けて raw 文字列に