4

1010 または 0101 のみに一致させたいが、1111 または 0000 には一致させたくない。次の正規表現を使用します。

\b((1|0)(?!\2))+

これは Kodos でうまく機能しますが、group() のおかげで一致したシーケンスも必要です。私はもう試した :

\b(((1|0)(?!\2))+)

しかし、Kodosで「open group*を参照できません」と表示されて、なぜ動かないのかわかりません。

助けてくれますか ?

編集: 適切な正規表現は(\b(((1|0)(?!\3))+).

4

1 に答える 1

9

問題は、2番目のコード行に3つの別々のグループがあることだと思います。それらは、オープニングパレンの順序に基づいて番号が付けられます。

Group 1: ((1|0)(?!\2))+
Group 2: (1|0)(?!\2)
Group 3: 1|0

ご覧のとおり、グループ2にはそれ自体への参照が含まれていますが、解析中は開いたままです。

于 2012-07-16T19:43:02.663 に答える