[アンカー]単語の先頭と単語の末尾にマッチする:\b \B

正規表現で使用するメタ文字の一つである \b と \B の使い方について解説します。 \b は単語の先頭または単語の末尾にマッチします。逆に \B は単語の先頭および末尾以外にマッチします。このような幅 0 の文字にマッチするメタ文字をアンカーと呼びます。

※ 単語ではなく文字列全体の先頭または末尾にマッチさせる方法については「文字列の先頭と文字列の末尾の位置にマッチする:キャレット(^) ドル記号($)」を参照されてください。

(Last modified: )

単語の先頭と末尾にマッチする:\b

\b は単語の先頭または単語の末尾にマッチするメタ文字です。

\b

例えば次のような正規表現のパターンで考えてみます。

\bmy

単語の先頭、 "m" 、 "y" 、と続くパターンとなります。このパターンとマッチする文字列は例えば次のようなものになります。

〇 my book
〇 I like mystery novels
✕ Her name is Tommy

\b は単語の先頭とマッチします。"m" そして "y" と文字が続いていたとしても単語の先頭にない場合はマッチしません。

また同じメタ文字で \b は単語の単語の末尾にもマッチします。例えば次のような正規表現のパターンで考えてみます。

my\b

"m" 、 "y" 、単語の末尾、と続くパターンとなります。このパターンとマッチする文字列は例えば次のようなものになります。

〇 my book
〇 Her name is Tommy
✕ I like mystery novels

\b は単語の末尾とマッチします。"m" そして "y" と文字が続いていたとしても単語の末尾にない場合はマッチしません。

\b を単語の先頭と末尾でマッチさせた場合です。例えば次のような正規表現のパターンで考えてみます。

\bmy\b

単語の先頭、 "m" 、 "y" 、単語の末尾、と続くパターンとなります。このパターンとマッチする文字列は例えば次のようなものになります。

〇 my book
〇 This is my book
✕ I like mystery novels
✕ Her name is Tommy

\b は単語の先頭と末尾にそれぞれマッチします。"my" という単語のみマッチします。

サンプル

JavaScript を使って簡単な正規表現のサンプルを作成してみます。

const regex1 = /\bmy/;

regex1.test('I like mystery novels');
--> true
regex1.test('Her name is Tommy');
--> false

const regex2 = /my\b/;

regex2.test('I like mystery novels');
--> false
regex2.test('Her name is Tommy');
--> true

単語の先頭と末尾にマッチする:\b(1)

単語の先頭と末尾以外にマッチする:\B

\B は単語の先頭および単語の末尾以外にマッチするメタ文字です。

\B

例えば次のような正規表現のパターンで考えてみます。

\Bon

単語の先頭以外、 "o" 、 "n" 、と続くパターンとなります。このパターンとマッチする文字列は例えば次のようなものになります。

〇 money capital
〇 oldest son
✕ once again

\B は単語の先頭以外とマッチします。"o" そして "n" と文字が続いていたとしても単語の先頭からの場合はマッチしません。

また同じメタ文字で \B は単語の単語の末尾にもマッチします。例えば次のような正規表現のパターンで考えてみます。

on\B

"o" 、 "n" 、単語の末尾以外、と続くパターンとなります。このパターンとマッチする文字列は例えば次のようなものになります。

〇 money capital
〇 once again
✕ oldest son

\B は単語の末尾以外とマッチします。"o" そして "n" と文字が続いていたとしても単語の末尾にある場合はマッチしません。

サンプル

JavaScript を使って簡単な正規表現のサンプルを作成してみます。

const regex1 = /\Bon/;

regex1.test('oldest son');
--> true
regex1.test('once again');
--> false

const regex2 = /on\B/;

regex2.test('oldest son');
--> false
regex2.test('once again');
--> true

単語の先頭と末尾以外にマッチする:\B(1)

-- --

正規表現で使用するメタ文字の一つである \b と \B の使い方について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。