正则表达式匹配预算数字问题求助:排除非纯数字括号内容
解决正则误匹配问题的方案
原正则的问题在于允许单独的半括号(比如只带右括号的9)),且未明确限定括号内部必须是纯数字且被完整包裹。可以通过以下方式修改正则,确保括号内仅包含数字且是完整的括号对:
修改后的正则表达式
((\(\d+\) )|(\(\d+\))|(\d+ )|(\d+)|(- )|(-))+$
正则逻辑说明
\(\d+\):严格匹配完整包裹纯数字的括号结构,比如(180),彻底排除9)这类半括号或括号内带非数字内容的情况\d+:匹配无括号的纯数字,比如260、640、155(- )|(-):保留原需求中的减号匹配逻辑,支持带空格或不带空格的减号形式- 整体通过
+$确保匹配的是字符串末尾的数字/括号数字/减号序列,不会误匹配前面文本中夹杂的无效半括号数字
测试验证
针对你提供的测试文本:
Modernization and improvement (note 9) 260 (180) 640 - 155
修改后的正则会正确匹配末尾的260 (180) 640 - 155部分,不会误匹配前面的9),因为9)不符合“完整括号包裹纯数字”的规则。
内容的提问来源于stack exchange,提问作者sleepymatto
相关产品推荐
相关产品推荐

