Pythonの正規表現でスペースと改行以外の文字にマッチさせる方法
Pythonの正規表現(regex)を使えば、スペースと改行を一切含まない文字列だけにマッチさせることができます。鍵となるのは、否定文字クラス [^ ] の使い方です。
パターンの解説
使用する正規表現パターンは r'^[^ \n]*$' です。各要素の意味は以下の通りです。
^:文字列の先頭を表す[^ \n]:否定文字クラス。「スペース」と「改行(\n)」以外の任意の1文字にマッチする*:直前の要素の0回以上の繰り返しを表す$:文字列の末尾を表す
つまりこのパターンは、「先頭から末尾まで、スペースと改行以外の文字だけで構成された文字列」に完全一致するかどうかを判定できます。
サンプルコード
import re print(re.match(r'^[^ \n]*$', """IfindTutorialspointuseful""")) print(re.match(r'^[^ \n]*$', """I find Tutorialspointuseful""")) print(re.match(r'^[^ \n]*$', """Ifind Tutorialspointuseful"""))
実行結果
<_sre.SRE_Match object at 0x00000000048965E0> None None
結果の読み方
1つ目の例「IfindTutorialspointuseful」にはスペースも改行も含まれていないため、マッチオブジェクトが返されます。一方、2つ目の例にはスペースが、3つ目の例には途中に改行が含まれているため、いずれも None が返ります。これにより、対象の文字列がスペースや改行を含んでいるかどうかを簡単にチェックできます。
補足:タブなどの空白文字も除外したい場合
タブなど、すべての種類の空白文字をまとめて除外したい場合は、非空白文字を表す \S を使った r'^\S*$' というパターンが便利です。\S はスペース・タブ・改行などすべての空白文字以外にマッチするため、より厳密なバリデーションに向いています。
-
Pythonで正規表現を使って文字列の先頭にマッチさせる方法
正規表現では、^(キャレット)というメタ文字を使うことで、文字列の先頭にマッチさせることができます。この記号は、パターンが対象となる文字列の冒頭から始まる場合にのみ一致することを意味します。例えば、次のコードは文字列「cheer leaders at the football stadium」の先頭にある単語「cheer」を抽出して表示します。コード例import re s = cheer leaders at the football stadium result = re.search(r^\w+, s) print(result.group())ここで使用しているパターン r^\w+
-
【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]パ