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

PCRE正则匹配未被奇数个指定字符转义的目标字符

解决PCRE匹配未被转义字符的问题

要匹配未被转义的字符a(转义字符为#),同时处理转义字符被转义的场景(即偶数个#后接a需匹配,奇数个则不匹配),可以使用以下PCRE正则表达式:

(?<!(?:##)*#)a

正则工作原理

  • (?:##)*:匹配0次或多次连续的两个#,对应偶数个转义字符的情况
  • (?:##)*#:整体匹配奇数个连续的转义字符
  • (?<!...):负向零宽断言,确保目标字符a的前面不是奇数个#
  • 最终效果:仅当a前的#数量为0(无转义)或偶数(转义字符被转义)时,才会匹配a

示例验证

  • bar:a前无#,匹配a ✅
  • b#ar:a前有1个#(奇数),不匹配 ✅
  • b##ar:a前有2个#(偶数),匹配a ✅
  • b###ar:a前有3个#(奇数),不匹配 ✅

实际场景适配

若你的真实需求是匹配未被奇数个\转义的{,只需将正则中的#替换为转义后的\即可,对应的正则为:

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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 18:52:49