-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”是可能的,那么如果另一个条目具有不同的后缀,则表达式将匹配。

有没有办法指定类似的东西^\1or [^\1]?at 这个词\1可以是捕获组中的值以外的任何内容。

4

1 回答 1

0

我认为你要求的是:

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

但是(1)我不确定在前瞻中是否允许组,并且(2)它并不能完全按照您的意愿进行 - 它会将每个ACTIVITY_11111 与 ACTIVITY_22222 匹配(因此您将获得多个匹配项,或者只有一个匹配项,但来自第一个 11111 而不是最后一个)。

我认为你需要的是:

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

其中中间块中的额外内容跳过了不匹配的 ACTIVITY(当然,如果上面的(1)是一个问题,这也不起作用,这可能取决于您的正则表达式库)。

于 2012-05-24T04:47:37.370 回答