正規表現 - メタ文字 \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('マッチする内容が見つかりませんでした!');
}
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('マッチする内容が見つかりませんでした!');
}
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('マッチする内容が見つかりませんでした!');
}
試してみる »