⊗jsSpREEP 129 of 294 menu

JavaScriptにおける正規表現内のキャプチャグループ

キャプチャグループの内容は、置換文字列だけでなく、正規表現自体の中でも利用できます: 何かをキャプチャグループに格納し、その正規表現内で「ここにはこのキャプチャグループの内容が入るべきだ」と指定することができます。

キャプチャグループの内容は、その番号にバックスラッシュを付けたもので参照できます。例えば、 最初のキャプチャグループは \1 で、 2番目のキャプチャグループは \2、 3番目は \3 というようになります。

ここまでの説明がまだよくわからなくても不思議ではありません。 キャプチャグループは正規表現の中で最も理解しにくい部分の一つだからです。例を通して理解を深めていきましょう。

次のような文字列があるとします:

let str = 'aa bb cd ef';

この中から、同じ文字が2回連続して現れる部分をすべて見つけてみましょう。 解決策としては、任意の文字を探し、それをキャプチャグループに格納し、 その次の文字がこのキャプチャグループの内容と一致するかどうかを確認します:

let res = str.replace(/([a-z])\1/g, '!');

結果、変数には次のような文字列が格納されます:

'! ! cd ef'

次のような文字列があるとします:

let str = 'asxca buzxb csgd';

この中から、最初と最後の文字が同じである単語をすべて見つけてみましょう。 解決策として、次のパターンを記述します: 1文字目をキャプチャし、 その後に1文字以上の任意の文字が続き、最後に最初にキャプチャした文字と同じ文字が来る

let res = str.replace(/([a-z])[a-z]+\1/g, '!');

結果、変数には次のような文字列が格納されます:

'! ! csgd'

練習問題

次の文字列が与えられます:

let str = 'aaa bbb ccc xyz';

同じ文字が3回連続して現れるすべての部分文字列を見つけてください。

次の文字列が与えられます:

let str = 'a aa aaa aaaa aaaaa';

同じ文字が2回以上連続して現れるすべての部分文字列を見つけてください。

次の文字列が与えられます:

let str = 'aaa aaa bbb bbb ccc ddd';

同じ単語が2回連続して現れるすべての部分文字列を見つけてください。

日本語
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItalianoქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
当サイトでは、サイトの動作、分析、パーソナライゼーションのためにクッキーを使用しています。 データ処理はプライバシーポリシーに従って行われます。
すべて受け入れる 設定 拒否