Pythonの正規表現を使って文字列から大文字を抽出する方法
Pythonのreモジュール(正規表現)を使うと、文字列の中から大文字だけを簡単に抽出できます。ポイントとなるのは文字クラス [A-Z] です。これは「AからZまでの任意の半角大文字1文字」を表すパターンで、これを re.findall() 関数に渡すことで、対象の文字列に含まれるすべての大文字をリストとして取得できます。
サンプルコード
以下のコードでは、文字列「MozamBiQuE」から大文字を検索し、その結果を出力しています。
import re foo = 'MozamBiQuE' match = re.findall(r'[A-Z]', foo) print(match)
実行結果
このコードを実行すると、次のような出力が得られます。
['M', 'B', 'Q', 'E']
出力を見ると、元の文字列「MozamBiQuE」に含まれていた大文字 M、B、Q、E の4つが、リスト形式ですべて取得できていることがわかります。
応用ポイント
・小文字も含めて英字全体を抽出したい場合は、[A-Za-z] のようにパターンを指定します。
・先頭の r はraw文字列(エスケープシーケンスを無効化する記法)で、正規表現を書く際の推奨スタイルです。
・大文字以外にも、数字なら [0-9]、特定範囲の文字なら [a-m] のように、文字クラスを組み合わせて柔軟にマッチング条件を作れます。
-
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 文字列に
-
【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]パ