Pythonの正規表現における\B(非単語境界)の動作を解説
Pythonの正規表現における \B の意味とは?
正規表現の \b は「単語境界」を表すメタ文字で、片側が単語構成文字(通常は英字・数字・アンダースコア)であるような位置にマッチします。
一方、今回解説する \B はその逆で、「\b がマッチしないすべての位置」、つまり単語境界ではない位置にマッチします。
\B の動作を確認するサンプルコード
以下のコードは、re.findall() を使って正規表現 \Bcat がどのように動作するかを示したものです。
import re
result = re.findall(r'\Bcat', 'certificate')
result2 = re.findall(r'\Bcat', 'tomcat')
result3 = re.findall(r'\Bcat', 'catfish')
print(result, result2, result3)このコードを実行すると、次のような出力が得られます。
['cat'] ['cat'] []実行結果の解説
- 'certificate':文字列内の「cat」は「certicate」の一部であり、直前の文字が「i」のため単語境界ではありません。したがって
\Bcatにマッチし、['cat']が返されます。 - 'tomcat':「tomcat」の「cat」も直前の文字が「m」なので、同じく
['cat']が返されます。 - 'catfish':「cat」が文字列の先頭にあるため、この位置は
\b(単語境界)に該当します。\Bはそこにはマッチしないため、結果は空のリスト[]となります。
まとめ
\B は \b の補集合として機能するメタ文字です。「単語の途中や連続した文字同士の間」など、単語境界以外の位置だけを対象にパターンを検索したい場合に活用できます。
-
Pythonの正規表現における修飾子(フラグ)の使い方と機能一覧
Python正規表現の修飾子とはPythonのreモジュールでは、正規表現によるパターンマッチングの挙動を制御するために、さまざまな修飾子(フラグ)を指定することができます。これらの修飾子を使うことで、大文字小文字の区別や改行の扱いなど、マッチングの動作を柔軟に変更できます。以下に、主要な修飾子とその機能を一覧形式で紹介します。1. re.I(re.IGNORECASE)大文字と小文字を区別せずにマッチングを行います。英字の大小を無視したい場合に便利です。2. re.L(re.LOCALE)現在のロケール設定に従って単語を解釈します。このフラグは、アルファベット系のグループ(\w および \W
-
Pythonにおけるアンダースコア(_)の意味と使い方をわかりやすく解説
Pythonでは、アンダースコア(_)は特別な役割を持つ記号です。一見ただの文字に見えますが、実際にはインタープリタの動作や命名規則、数値リテラルの表記など、さまざまな場面で重要な働きをします。この記事では、Pythonでアンダースコアが使われる主な5つのケースを、コード例とともにわかりやすく解説します。1. インタープリタで直前の式の値を保持するPythonの対話モード(インタープリタ)では、直前に評価した式の結果が、特別な変数「_」に自動的に格納されます。計算結果をすぐに再利用したいときに非常に便利です。使用例>>> 12 + 10 22 >>> _ 2