如何修改正则表达式以仅匹配int和long,排除浮点数、科学计数法中的数字
正则表达式修改方案
最终可用正则
(?<![\w.eE]|e[+-])(-?\d+[lL]?)(?![\w.eE])
修改逻辑说明
- 替换原正则中通用的
\W边界断言,新增对小数点、科学计数法标识e/E的排除规则 - 新增前缀排除逻辑:避免匹配科学计数法指数段的数字,同时避免识别变量名中嵌入的数字
- 新增后缀排除逻辑:避免匹配多l/L后缀的非法long值、浮点数的整数/小数段数字
匹配效果验证
可正确识别的合法值
- int类型:1、23、-1、-100、方括号包裹的13、代码逻辑中的0、1
- long类型:1L、23l、23L、-1l、-100L、方括号包裹的16L
不会误识别的非法值
- 非法long格式:1ll、1LL、1l0、1L0
- 浮点数片段:3.中的3、.4中的4、5.6中的5和6
- 科学计数法片段:1e-7中的1和7
- 变量名内嵌数字:m_ned3中的3、ned2中的2
内容的提问来源于stack exchange,提问作者cheny
相关产品推荐
相关产品推荐

