我想过滤一组键和值。所有键和非aaa或aaa键的值都应匹配。当前,键既不匹配,也不排除键aa和aaa。
reg exp:(?!AA | AAA):。+ ?;
测试字符串:AA:1; AB:2; AC:3; AAA:4; AAB:5; AAC:6;
预期:AB:2; AC:3; AAB:5; AAC:6;
示例:https://regex101.com/r/AyW9PY/1/
感谢您的帮助。
答案 0 :(得分:2)
超前构造的宽度为零,它不使用其模式匹配的文本。因此,您的(?!AA|AAA)
只是说:如果右边紧邻AA
或AAA
,则匹配失败。但是要消耗的下一个字符是:
,因此超前总是返回true,并且是多余的。
如果您的键包含字符char,则可以使用
\b(?!AAA?:)\w+:[^;]*;
请参见regex demo
详细信息
\b
-单词边界(?!AAA?:)
-如果在当前位置的右侧紧邻有两个或三个A
,然后是:
\w+
-1个以上的字符字符:
-一个:
[^;]*
-除;
以外的0多个字符;
-一个;
。