代替表現、グループ化

javascript

概要

正規表現の代替表現について、試してみます。
前回の投稿で下記のようなサンプルコードを書きました。

//先頭がaのものにマッチ
let test = /^a/;
let pattern_str = "abcdef";
console.log(pattern_str.match(test));

let pattern_str2 = "bcadef";
console.log(pattern_str2.match(test));

上記の場合は先頭がaの場合にマッチするという動きなので、
前者がマッチし、後者はマッチしません。

では、「先頭がaもしくはbのものにマッチする」という必要がある場合はどのように書くかというと、|を使います。
実際に書いて試してみます。

//|を使ってaとbの両方にマッチさせる
let test = /^a|^b/;

let pattern_str3 = "abcdef";
console.log(pattern_str3.match(test));

let pattern_str4 = "bcadef";
console.log(pattern_str4.match(test));

上記の出力の場合、出力結果は次のようになります。

Array [ "a" ]
Array [ "b" ]

|を使用すると一度のパターンマッチで複数の条件にマッチさせることができます。

グループ化

次に括弧を使った正規表現を試してみます。
括弧を使うとパターン文字列をグループ化してマッチさせることができます。

簡単な例を書いてみます。

let test_pattern = /a(b)/;
let str = "abcdef";
console.log(str.match(test_pattern));

出力結果は

Array [ "ab", "b" ]

になります。これはaと括弧内のbを組み合わせたabにマッチした結果と、
括弧内をグループ化してマッチした結果がそれぞれ出力されています。

次に上記の例を少し変更して次のコードを書いてみます。

let test_pattern4 = /a(b|c)/;
let str4 = "acbdef";
console.log(str4.match(test_pattern4));

let str5 = "abcdef";
console.log(str5.match(test_pattern5));

出力結果は

Array [ "ac", "c" ]
Array [ "ab", "b" ]

になります。
この場合は、/a(b|c)/と記述することで、aの後に続く文字列として、括弧内のabまたはacにマッチし、またそれぞれbとcもマッチします。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です