正規表現 - メタ文字 \b と \B

正規表現 - メタ文字

\bと\Bは正規表現における2つの特別なメタ文字で、単語境界のマッチングに使用されます。


単語境界 \b

正規表現において、\bは特別なメタ文字で、単語境界を表します。単語の開始または終了の位置にマッチしますが、実際の文字にはマッチしません。

具体的には、\b次の3つのケースのいずれかにマッチします:

  • 単語の先頭:もし\bが文字または数字の前、または文字列の先頭にある場合、単語の開始位置にマッチします。
  • 単語の末尾:もし\bが文字または数字の後、または文字列の末尾にある場合、単語の終了位置にマッチします。
  • 単語の内部:もし\bが2つの連続する文字または数字の間にある場合、単語境界がないため、何にもマッチしません。

以下はメタ文字\bの例です:

  • 正規表現\bword\b単語全体 "word" にマッチしますが、"words" や "sword" にはマッチしません。
  • 正規表現\b\d+\b完全な数字、例えば "123" にマッチしますが、"abc123" にはマッチしません。
  • 正規表現\b[A-Z]+\b完全な大文字の単語、例えば "HELLO" にマッチしますが、"hello" にはマッチしません。

注意すべき点は、\bはゼロ幅アサーションであり、実際の文字にはマッチせず、位置のみにマッチします。したがって、実際の文字にマッチさせたい場合は、\bを使用せず、他の文字または文字の組み合わせを使用すべきです。

例

// \b を使用して単語マッチングを行う
var patternWord = /\bword\b/;
var textWord = 'This is a word in a sentence.';

if (patternWord.test(textWord)) {
    document.write('マッチした単語が見つかりました:', patternWord.exec(textWord)[0]);
} else {
    document.write('マッチする内容が見つかりませんでした!');
}

試してみる »

非単語境界 \B

正規表現において、\Bである\bは \b の反対の記号で、非単語境界を表します。つまり、単語境界ではない位置にマッチします。

具体的には、\B次のケースのいずれかにマッチします:

  • 単語の内部:もし\Bが2つの連続する文字または数字の間にある場合、この2つの文字の間の位置にマッチし、それらが単語の境界ではないことを示します。
  • 単語の先頭または末尾ではない場合:もし\Bが文字または数字の前または後にある場合、その位置にマッチし、単語の先頭または末尾ではないことを示します。

以下はメタ文字\Bの例です:

  • 正規表現\Bword\B"sword1" 内の "word" にマッチしますが、"password" や "words" にはマッチしません。
  • 正規表現\B\d+\B"abc123def" 内の "123" にマッチしますが、"123" や "abc123" にはマッチしません。
  • 正規表現\B[A-Z]+\B"HELLO WORLD" 内の "ELL" と "ORL" にマッチしますが、"HELLO" や "WORLD" にはマッチしません。

注意すべき点は、\bとは異なり、\Bもゼロ幅アサーションであり、位置のみにマッチし、実際の文字にはマッチしません。

例

// \B を使用して非単語マッチングを行う
var patternWord = /\Bword\B/;
       
// これはマッチします
var textWord = 'This is a password123 in a sentence.';
       
// これはマッチしません
//var textWord = 'This is a password in a sentence.';
if (patternWord.test(textWord)) {
    document.write('マッチした単語が見つかりました:', patternWord.exec(textWord)[0]);
} else {
    document.write('マッチする内容が見つかりませんでした!');
}

試してみる »

正規表現 - メタ文字

その他の拡張