-1

名前と値のペアのリストで「余分な」名前を探しています。名前だけ"ACTIVITY_nnnnn"が重要です。それぞれの名前の接尾辞"_nnnnn"は同じである必要があり、そうでない場合、これは検出されるべきエラー状態です。

与えられた:

OneTwo=ThreeFour
ACTIVITY_11111=56676566
ACTIVITY_11111=ASDFASDF
ACTIVITY_22222=ASDFwSDF
ABC-123=1121
ACTIVITY_33333=ASDFASsF
ACTIVITY_11111=ASFAFA
DEF-XXY=22222

この場合、最初の不一致はACTIVITY_11111vs.にありACTIVITY_22222ます。

この式は、別の「一致する」エントリが見つかったときに一致を見つけます。

ACTIVITY_(\d*=)(.|\r|\n)*ACTIVITY_\1

これは私が必要としているものとは正反対です...「Not \1」が可能だった場合、別のエントリに別のサフィックスが付いていれば、式は一致します。

またはのようなものを指定する方法はあります^\1[^\1]?atという単語\1は、キャプチャグループの値以外の値にすることができます。

4

1 に答える 1

0

私があなたが求めていると思うのは:

ACTIVITY_(\d*=)(.|\r|\n)*ACTIVITY_(?!\1)

しかし、(1)先読みでグループが許可されているかどうかはわかりません。また、(2)希望どおりの結果が得られません。ACTIVITY_11111とACTIVITY_22222が一致します(したがって、複数の一致、または1つだけが一致します。最後ではなく最初の11111)。

私があなたが必要だと思うものは:

ACTIVITY_(\d*=).*[\r\n]((?!ACTIVITY).*[\r\n])*ACTIVITY_(?!\1)

ここで、真ん中の余分なものは、一致しないACTIVITYをスキップします(もちろん、上記の(1)が問題である場合は、どちらも機能しません。これは、正規表現ライブラリに依存する可能性があります)。

于 2012-05-24T04:47:37.370 に答える