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

如何编写RE2C格式正则匹配合法二进制字面量(无尾部下划线)

解决RE2C正则匹配二进制字面量的尾部下划线问题

问题背景

要编写RE2C格式的正则表达式,用于匹配合法的二进制字面量。合法示例包括:0b1、0b101、0b1111、0b11_11、0b1_111、0b1_1_1_1。下划线的使用规则是:仅作为数字之间的分隔符,不能出现在开头或结尾,且不能有两个及以上连续下划线。

当前使用的正则表达式为:

BINARY_NUM = "0b" ("0"|"1") ("_"? ("0"|"1"))*;

该正则会错误匹配带有尾部下划线的内容,例如0b1_0_这类不符合规则的字符串。

修改后的正确正则

BINARY_NUM = "0b" ("0"|"1") ( "_" ("0"|"1") )*;

逻辑说明

  • 保留原逻辑中以0b开头、紧跟一个二进制数字(0或1)的部分
  • 将后续的("_"? ("0"|"1"))*替换为( "_" ("0"|"1") )*,这意味着:后续如果出现下划线,必须紧跟一个二进制数字,从根源上避免了尾部出现下划线的可能——最后一位只能是数字,不可能是下划线
  • 同时该写法天然规避了连续下划线的情况:因为下划线后必须跟数字,无法形成__这样的连续下划线组合,完全符合规则要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 15:47:12