我正在寻找名称 - 值对列表中的“额外”名称。
只有名字"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_11111
与ACTIVITY_22222
之间。
当找到另一个“匹配”条目时,此表达式找到匹配项:
ACTIVITY_(\d*=)(.|\r|\n)*ACTIVITY_\1
这与我需要的完全相反......如果“Not \1
”是可能的,
如果另一个条目具有不同的后缀,则表达式将匹配。
有没有办法指定^\1
或[^\1]
之类的内容?
\1
处的单词可以是捕获组中的值。
答案 0 :(得分: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)是一个问题,这可能会有效,这可能取决于你的正则表达式库。)