知识卡片

排除组仍消费字符

普通读书笔记卡 · 1909.b.1

内容

排除型字符组并不是“什么都不匹配”,而是匹配一个不在集合内的字符。它仍然会消耗输入位置,因此不能替代零宽断言。发散:很多边界 bug 来自把“排除条件”误认为“不前进的判断”。

参考来源

- 位置:第1章《正则表达式入门》「排除型字符组」小节(源文件:_epub-src/text/part0006_split_004.html) - 结论依据:原文明确区分排除型字符组的两种理解——'匹配一个未列出的字符'而非'不要匹配列出的字符',并强调它仍然需要匹配一个字符(消费字符),直接支持卡片论点。 - 原始内容:"请记住,排除型字符组表示'匹配一个未列出的字符(match a character that's not listed)',而不是'不要匹配列出的字符(don't match what is listed)'……排除型字符组同样是一种'肯定断言'(positive assertion)——即使它的名字里包含了'排除'两个字,它仍然需要匹配一个字符。"