トップページに戻る    次の正規表現パズルへ    前の正規表現パズルへ

4-15 アトミックなグループを模倣

正規表現パズル

^(?>[ab]+)(?>[bc]+)(?>[ab]+)[bc]+$
のアトミックなグループを使ったマッチを模倣する

検索前


検索後


対象データ

aaaabbbbccccaaaabbb
aaaabbbbccccaaaabbbccc


正規表現

^(?=([ab]+))\1(?=([bc]+))\2(?=([ab]+))\3[bc]+$

別解1

^[ab]+(?![ab])[bc]+(?![bc])[ab]+(?![ab])[bc]+$

別解2

^[ab]+c[bc]*a[ab]*c[bc]*$


解説

(?>正規表現)
は
(?=(正規表現))\1
で模倣できます。

アトミックグループの中身が+指定なので
別解のように否定先読みを使って模倣することができます。

同様に、Javaのよくばりマッチ(強欲マッチ)も否定先読みを使って模倣できます。

4-7 よくばりマッチ(強欲マッチ)を模倣
アトミックグループ内での最小マッチを模倣