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

Regex匹配单个空格但排除转义十六进制字符前后场景的问题

解决方案

你需要的正则表达式可以这样写:

(?!(?<=\\[\da-f]{2})[\da-f]) 

正则逻辑解释

这个表达式的核心是排除同时满足两个条件的空格:

  • 空格前面紧跟一个\XX格式的转义序列(\后跟两位十六进制字符)
  • 空格后面直接跟十六进制字符(0-9、a-f)

具体拆解:

  • (?!...):负前瞻断言,确保括号内的场景不会出现
  • (?<=\\[\da-f]{2}):正后顾断言,匹配空格前两位是\加两位十六进制字符的情况
  • [\da-f]:匹配任意十六进制字符

测试验证

对应你的测试用例:

  • 需要匹配的行:
    • .c ber:空格前无\XX序列,匹配
    • .cb ber:空格前无\XX序列,匹配
    • .test test:空格前后均不触发排除规则,匹配
    • .\\fc ker:空格前是\fc,但后续是k(非十六进制字符),匹配
    • .k ker:空格前后均不触发排除规则,匹配
  • 不需要匹配的行:
    • .bob\\fc ber:空格前是\fc,后续是b(十六进制字符),不匹配
    • .\\fc ber:空格前是\fc,后续是b(十六进制字符),不匹配

扩展场景补充

如果还需要排除「空格在\和十六进制字符之间」的情况(比如\ ab中的空格),可以使用更严谨的版本:

(?!(?<=\\[\da-f]{2})[\da-f]|(?<=\\)[\da-f]) 

这个版本同时排除两种被\开头的十六进制序列包围的场景:

  1. 空格紧跟\XX后且后续是十六进制字符
  2. 空格紧跟\后且后续是十六进制字符

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 19:45:30