Pythonの正規表現でタブと改行にマッチさせ、スペースは除外する方法
Pythonの正規表現(reモジュール)を使えば、文字列からタブや改行といった特定の制御文字だけを簡単に抽出できます。スペースをマッチ対象から除外したい場合は、文字クラス [\n\t] のように、改行(\n)とタブ(\t)のみを明示的に指定します。
文字クラスの仕組み
正規表現では、角括弧 [] で囲まれた「文字クラス」は、その中に含まれるいずれか1文字にマッチします。[\n\t] と書けば「改行またはタブ」にマッチし、半角スペースはパターンに含まれていないため自動的に無視されます。
サンプルコード
import re
text = """I find
Tutorialspoint useful"""
print(re.findall(r"[\n\t]", text))実行結果
['\n']
解説
この例では、対象の文字列に改行が1つ含まれているため、re.findall() はリスト ['\n'] を返します。インデント部分が半角スペースで構成されている場合、それらはパターンに含まれないためマッチせず、結果には現れません。
もしインデントがタブで構成されていれば、そのタブも結果に含まれます。逆に、スペースも一緒に検出したい場合は、文字クラスに空白を表す \s を使うか、[\n\t ] のようにスペースを明示的に追加してください。
-
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]パ