宿題でこの式を見つけました。これは、「母音 (a、e、i、o、または u) の後に 1 つの文字が続き、その後に同じ母音が再び続く行をすべて印刷します。したがって、「eve」または「adam」は見つかりますが、「vera」は見つかりません。」というものです。この式は正しく機能しますが、その仕組みをさらに理解できるように、各部分が何をするのかを説明してくれる人を探しています。
答え1
まず、正規表現のサイトを Google で検索してください。非常に役立ちます。たとえば、regexone を試してください。
次に、正規表現をテストしたり理解を深めたりするには、regex101.com を参照してください。これは、何が起こるかを段階的に説明しているため、非常に役立ちます。また、正規表現をテストすることもできます。
さて、表現についてですが、
[aeiou]
括弧内のいずれかの文字と一致します (ここでは、a、e、i、o、または u)。
.
任意の1文字に一致する
\1
最初のキャプチャ グループと一致します。
\(anything\)
キャプチャグループです。
キャプチャ グループは、後で使用するために覚えておくことができる文字列の名前です。この場合、[aeiou] から任意の文字をキャプチャすると、一致したものを記憶できます。代わりに次の正規表現を記述すると:
[aeiou].[aeiou]
最初の母音と 2 番目の母音が同じかどうかを確認する方法がありません。
したがって、正規表現は「「aeiou」の文字の 1 つに一致し、次に任意の 1 文字に一致し、最後に最初の文字に一致する」ことを意味します。
答え2
まず、 と\(
です\)
。これは、「これらのエスケープされた括弧内のものはすべてグループであり、式の中で後でそのように参照できる」ことを意味します。その中に があり[aeiou]
、これは「文字a
、e
、i
、o
、 のいずれかu
」を意味します。単一のドット 、.
は「任意の単一の文字」を意味します。 は\1
「最初のグループに一致したときに見つかったもの」を意味します。