Pythonで正規表現を使って空白以外の文字にマッチさせる方法
Pythonで正規表現を使って文字列中の「空白以外の文字」を照合するには、\S(大文字のS)という特殊シーケンスを使用します。\S はスペース・タブ・改行などの空白文字以外の任意の1文字にマッチし、+ を組み合わせることで、連続した空白以外の文字列(単語など)をまとめて取得できます。
re.search() を使った例
次のコードは、指定した文字列から最初に見つかった空白以外の文字の連なりを検索します。
import re foo = re.search(r'\S+', 'Need for Speed 2') print(foo)
出力
<re.Match object; span=(0, 4), match='Need'>
re.search() は最初のマッチのみを返すため、マッチオブジェクトがそのまま出力されます。実際にマッチした文字列を確認するには foo.group() を使用してください。
re.findall() を使った例
次のコードは、文字列内のすべての空白以外の文字列を検索し、リストとして取得して表示します。
import re foo = re.findall(r'\S+', 'Need for Speed 2') print(foo)
出力
['Need', 'for', 'Speed', '2']
このように re.findall() を使えば、文字列を空白区切りの単語リストへ簡単に変換できます。なお、単純に空白で分割するだけであれば、正規表現を使わず str.split() メソッドを利用する方法もあります。用途に応じて使い分けると良いでしょう。
-
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]パ