正規表現を使いこなす

x(?=y) の使い方

「x(?=y)」は、正規表現 y がマッチングしたときのみ正規表現 x を評価します。
似たようなパターンがあるとき、続くパターンを指定することで目的のパターンにマッチングさせることができます。

「tag01 Tag123 TAGabc」で、「01」、「123」、「abc」の差異でマッチングさせたい位置を指定できます。
// 検索対象文字列
var str = "tag01 Tag123 TAGabc";
// 検索実行および結果出力
document.write("「[A-Za-z]+(?=01)」で抽出結果: ", str.match(/[A-Za-z]+(?=01)/));
document.write("<br>「[A-Za-z]+(?=123)」で抽出結果: ", str.match(/[A-Za-z]+(?=123)/));
document.write("<br>「[A-Za-z]+(?=abc)」で抽出結果: ", str.match(/[A-Za-z]+(?=abc)/));
実行結果:


残念ながら「(?=y)x」のように順序を入れ替えることはできないようです。
私としては、「(?=y)x」の方が使い易いのですが・・・。

戻る