正则与文本处理指南

正则贪婪与懒惰:明确分隔符规则

比较贪婪、懒惰与否定字符类,避免把简单分隔符匹配当成嵌套格式解析器。

Nav Tools ·

观察贪婪匹配范围

贪婪量词会尽量多消费字符,同时允许剩余模式完成匹配。

两个括号值可能被点星模式一次吞下,测试时应检查完整命中内容,而非只看是否成功。

'[one][two]'.match(/\[.*\]/g) → ['[one][two]']

改为懒惰量词

量词后加问号让它优先消费更少字符,但后续无法匹配时仍会扩展。

简单扁平括号格式中,下面的懒惰版本会分别找到两个值。

'[one][two]'.match(/\[.*?\]/g) → ['[one]','[two]']

直接表达不允许的分隔符

否定字符类可明确内容不能包含结束分隔符,通常比点星更清楚表达扁平语法。

若也不允许换行,应显式排除,点号与字符类的行为不同。

/\[[^\]\r\n]*\]/g

明确扁平语法边界

转义分隔符与嵌套括号需要更多规则,懒惰量词不理解嵌套或字符串引用。

结构化语言应使用对应解析器;扁平匹配器上线前测试缺闭合、空括号和禁止换行。

参考资料

← 正则与文本处理指南