Python
 Computer >> コンピューター >  >> プログラミング >> Python

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 の補集合として機能するメタ文字です。「単語の途中や連続した文字同士の間」など、単語境界以外の位置だけを対象にパターンを検索したい場合に活用できます。

  1. Pythonの正規表現における修飾子(フラグ)の使い方と機能一覧

    Python正規表現の修飾子とはPythonのreモジュールでは、正規表現によるパターンマッチングの挙動を制御するために、さまざまな修飾子(フラグ)を指定することができます。これらの修飾子を使うことで、大文字小文字の区別や改行の扱いなど、マッチングの動作を柔軟に変更できます。以下に、主要な修飾子とその機能を一覧形式で紹介します。1. re.I(re.IGNORECASE)大文字と小文字を区別せずにマッチングを行います。英字の大小を無視したい場合に便利です。2. re.L(re.LOCALE)現在のロケール設定に従って単語を解釈します。このフラグは、アルファベット系のグループ(\w および \W

  2. Pythonにおけるアンダースコア(_)の意味と使い方をわかりやすく解説

    Pythonでは、アンダースコア(_)は特別な役割を持つ記号です。一見ただの文字に見えますが、実際にはインタープリタの動作や命名規則、数値リテラルの表記など、さまざまな場面で重要な働きをします。この記事では、Pythonでアンダースコアが使われる主な5つのケースを、コード例とともにわかりやすく解説します。1. インタープリタで直前の式の値を保持するPythonの対話モード(インタープリタ)では、直前に評価した式の結果が、特別な変数「_」に自動的に格納されます。計算結果をすぐに再利用したいときに非常に便利です。使用例>>> 12 + 10 22 >>> _ 2