^(?>[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 よくばりマッチ(強欲マッチ)を模倣 アトミックグループ内での最小マッチを模倣