1

aaまたはbbで始まります。それで終わります(バックリファレンス)。そして、真ん中にはありません。

「または」とバックリファレンスaa.*?(?!aa).*?aa
がなくても問題ありませんが、それらでは機能しません。 (aa|bb).*?(?!\1).*?\1

echo preg_match("@(aa|bb).*?(?!\\1).*?\\1@", 'aaxxaaxaa'); // 1 ??
echo preg_match("@(aa|bb).*?(?!\\1).*?\\1@", 'aaxxxaa'); // 1

なにが問題ですか?

4

1 に答える 1

2

すべてのキャラクターのネガティブな状態をチェックする必要があります。

(aa|bb)((?!\\1).)*\\1

また、アンカーを追加する必要があります。

^(aa|bb)((?!\\1).)*\\1$

オンラインで動作することを確認してください:ideone

于 2012-07-26T10:08:21.753 に答える