正規表現を使いこなす

\b の使い方

「\b」は単語の区切りにマッチングします。
「\B」は単語の区切り以外の区切り(単語内の文字区切り)にマッチングします。
注意:区切りとは、文字と文字の中間の位置を示します。

「tag01 Tag123 TAGabc」の文字列で単語区切りがどこにあるかを見てみましょう。
// 検索対象文字列
var str = "tag01 Tag123 TAGabc";
// 検索実行および結果出力
document.write("検索結果: ", str.search(/\b/g));
document.write("<br>抽出結果: ", str.match(/\b/g));
document.write("<br>置換結果: ", str.replace(/\b/g, "|"));
実行結果:


置換結果の「|」が単語の区切りです。なお、正規表現式の後の「g」は、「マッチするのもを全て見つける」という意味の修飾子です。
この結果から、一見すると「\b.+\b」で単語とスペーサーの切り出しができそうですが、残念ながら以下のように無理のようです。
// 検索対象文字列
var str = "tag01 Tag123 TAGabc";
// 検索実行および結果出力
document.write("「\b.+\b」による抽出結果: ", str.search(/\b.+\b/g));
document.write("<br>「.+」による抽出結果: ", str.match(/\b.+\b/g));
実行結果:


理由は、最左最長マッチングの影響です。
「\b」で文字列の先頭の区切りがマッチ(最左)し、「.+」では「\b」も含めた最後までの文字にマッチ(最長)、さらに文字列末尾の区切りに「\b」がマッチしたので、結局全てのの文字がマッチしたのです。


\B の使い方

「\B」は、単語の区切り以外の区切りです。
「tag01 Tag123 TAGabc」の文字列で単語区切りがどこにあるかを見てみましょう。
// 検索対象文字列
var str = "tag01 Tag123 TAGabc";
// 検索実行および結果出力
document.write("検索結果: ", str.search(/\B/g));
document.write("<br>抽出結果: ", str.match(/\B/g));
document.write("<br>置換結果: ", str.replace(/\B/g, "|"));
実行結果:


単語内の全ての文字の区切りにマッチしています。
こんなもの、どうやって使うんだぁ。

戻る