JavaScript正規表現における「または」コマンド
このレッスンでは、コマンド
'|' を分析します。これは
コマンド [ ] と比較して、より強力な
'または' のバリアントです。
このコマンドは、正規表現を複数の部分に
分割することを可能にします。
その際、検索対象は正規表現の一方の部分に
マッチするか、もう一方の部分にマッチします。
例を見てみましょう。
例
この例の検索パターンは次の通りです:
文字 'a' が3回、または文字 'b' が3回:
let str = 'aaa bbb abb';
let res = str.replace(/a{3}|b{3}/g, '!');
結果、変数には以下が格納されます:
'! ! abb'
例
この例の検索パターンは次の通りです:
文字 'a' が3回、または文字 'b' が1回以上:
let str = 'aaa bbb bbbb bbbbb axx';
let res = str.replace(/a{3}|b+/g, '!');
結果、変数には以下が格納されます:
'! ! ! ! axx'
例
この例の検索パターンは次の通りです: 1文字以上のアルファベット、または3桁の数字:
let str = 'a ab abc 1 12 123';
let res = str.replace(/[a-z]+|\d{3}/g, '!');
結果、変数には以下が格納されます:
'! ! ! 1 12 !'
例
縦棒は正規表現を2つだけでなく、 任意の数の部分に分割できます:
let str = 'aaa bbb ccc ddd';
let res = str.replace(/a+|b+|c+/g, '!');
結果、変数には以下が格納されます:
'! ! ! ddd'
例
縦棒が丸括弧内にある場合、
'または' の作用はその括弧内のみに限定されます。
例として、次のパターンにマッチする文字列を探してみましょう:
先頭に 'a' または 'b' が1回以上続き、
その後ろに文字 'x' が2回:
let str = 'axx bxx bbxx exx';
let res = str.replace(/(a|b+)xx/g, '!');
結果、変数には以下が格納されます:
'! ! ! exx'
実践問題
次の文字列が与えられています:
let str = 'aeeea aeea aea axa axxa axxxa';
次のパターンにマッチする文字列を見つける正規表現を記述してください:
両端に文字 'a' があり、
その間には、文字 'e' が任意の回数、または文字 'x' が任意の回数。
次の文字列が与えられています:
let str = 'aeeea aeea aea axa axxa axxxa';
次のパターンにマッチする文字列を見つける正規表現を記述してください:
両端に文字 'a' があり、
その間には、文字 'e' が2回、または文字 'x' が任意の回数。