概要: このチュートリアルでは、JavaScript の正規表現で X の前に Y がある場合に X にマッチさせる正規表現の Lookbehind(ルックビハインド)の使い方を学びます。
JavaScript の正規表現の Lookbehind(ルックビハインド)の概要
正規表現では、Lookbehind(ルックビハインド)は直前に別の特定の要素があれば要素に一致します。Lookbehind は次の構文があります。
(?<=Y)Xこの構文では、直前に Y があればパターンには X と一致します。
例えば、次の文字列の中にある数値 1 ではなく 900 にマッチさせたいとします。
'1 computer costs $900'Code language: JavaScript (javascript)これを行うには、正規表現に次のように Lookahead(ルックアヘッド)を使用します。
/(?<=\$)\d+/この正規表現では
(?<=\$)は直前に文字列リテラル$があれば要素に一致します。$は正規表現内の特殊文字であるため、バックスラッシュ\を使用してエスケープする必要があります。これにより、正規表現エンジンは\$を文字通りの文字$として扱います。\d+は 1 つ以上の数字に一致します。
次の例は、正規表現で Lookbehind(ルックビハインド)を使用して直前に $ 記号のある数字にマッチさせる方法を示しています。
const s = '1 computer costs $900';
const pattern = /(?<=\$)\d+/;
const match = s.match(pattern);
console.log(match);Code language: JavaScript (javascript)出力
[ '900', index: 18, input: '1 computer costs $900', groups: undefined ]Code language: JSON / JSON with Comments (json)ネガティブ Lookbehind(ルックビハインド)
Lookbehind(ルックビハインド)を否定するには、次のような構文を持つネガティブ Lookbehind(ルックビハインド)を使用します。
(?<!Y)Xこの構文では、直前に ない Y があれば正規表現エンジンは X に一致します。次の例は、ネガティブ Lookbehind(ルックビハインド)を持つ正規表現を使用して直前に $ 文字のない数字に一致します。
const s = '1 computer costs $900';
const pattern = /(?<!\$)\d+/;
const match = s.match(pattern);
console.log(match);Code language: JavaScript (javascript)出力
1サマリー
- Lookbehind(ルックビハインド)
(?<!Y)Xは、Yが直前にある場合にのみXに一致します。 - ネガティブ Lookbehind(ルックビハインド)
(?<!Y)Xは、Yが直前にない場合にのみXに一致します。
このチュートリアルは役に立ちましたか?