作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想过滤一组键和值。所有键不是 aa 或 aaa 的键和值都应该匹配。目前既没有匹配到键,也没有排除键 aa 和 aaa。
正则表达式:(?!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/
我很感激任何帮助。
最佳答案
前瞻结构是零宽度的,它不消耗其模式匹配的文本。因此,您的 (?!AA|AAA)
只是说:如果右边有 AA
或 AAA
,则匹配失败。但是下一个要使用的字符是 :
,因此先行总是返回 true,并且是多余的。
如果您的键由字符组成,您可以使用
\b(?!AAA?:)\w+:[^;]*;
参见 regex demo
详情
\b
- 单词边界(?!AAA?:)
- 如果在当前位置的右侧紧跟两个或三个 A
,则匹配失败的否定前瞻使用 :
\w+
- 1+ 个单词字符:
- 一个 :
[^;]*
- ;
以外的 0+ 个字符;
- ;
。关于regex - 正则表达式否定先行断言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53012485/
上周在.NET性能优化群里面有一个很有意思的讨论,讨论的问题如下所示: 请教大佬:2D数组,用C#先遍历行再遍历列,或者先遍历列再遍历行,两种方式在性能上有区别吗? 据我所知,
访问链接树的所有节点的最佳方法是什么(所有节点都引用父节点和所有子节点,根节点的父节点为 null),以便在其任何祖先之前都不会访问任何节点?非递归的布朗尼点数。 最佳答案 伪代码: NodesToV
我是一名优秀的程序员,十分优秀!