You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求构建匹配正则字符串中未转义$符号的正则表达式方案

匹配未转义的$符号的正则方案

你需要的是匹配字符串中未转义的$符号(即$前的反斜杠数量为偶数,包括0个),原正则(?<!\\)(\\{2})*\$的问题在于会把前面的偶数个反斜杠也包含在匹配结果里,而且你担心需要多个非捕获组的思路其实没必要,以下是更精准的解决方案:

方案1:仅匹配未转义的$符号本身

使用负向预查精准定位,确保$前没有奇数个反斜杠:

\$(?<!\\(?:\\{2})*)

解释:

  • \$:直接匹配目标符号$
  • (?<!\\(?:\\{2})*):负向预查规则,排除$前有「1个反斜杠 + 任意多对反斜杠」的情况(也就是总反斜杠数为1、3、5...奇数个),剩下的就是前有0、2、4...偶数个反斜杠的合法场景,完全符合未转义的定义。

方案2:匹配「偶数反斜杠+$」的完整上下文

如果需要关联$前的偶数反斜杠上下文,可优化原正则的可读性,用非捕获组明确逻辑:

(?<!\\)(?:\\{2})*\$

解释:

  • (?<!\\):负向预查,确保$的前一个字符不是单独的反斜杠(避免出现奇数反斜杠的收尾)
  • (?:\\{2})*:单个非捕获组就能匹配0或多对反斜杠(总偶数个),不需要多个连续非捕获组,量词*已经实现了重复匹配成对反斜杠的效果
  • \$:匹配目标$
    这个正则会完整匹配$、\\$、\\\\$这类符合要求的字符串,而\$、\\\$这类转义后的$则不会被匹配。

内容的提问来源于stack exchange,提问作者Benny Brudner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 13:07:02