如何修正Java正则表达式以正确匹配字符串中的合法整数
修正后的正则表达式解决方案
要匹配独立的合法整数(格式为number、+number、-number),需确保整数前后不与字母、数字或下划线这类单词字符相连,避免匹配像a+78中的+78这类嵌入在其他字符中的片段。
修正后的正则表达式
(?<!\w)(?:\+|-)?\d+(?!\w)
正则规则说明
(?<!\w):负向反向预查,确保匹配的整数前面不是单词字符(字母、数字、下划线),也支持字符串开头的场景。(?:\+|-)?:可选的正号或负号,(?:...)是非捕获组,仅用于分组逻辑,不会额外生成捕获结果。\d+:匹配一个或多个数字,构成整数的核心数值部分。(?!\w):负向正向预查,确保匹配的整数后面不是单词字符,也支持字符串结尾的场景。
测试验证
将修正后的正则应用到你的测试字符串:
123 +234 -345 456 - + abc a+78 sdf-sdf +1abc -3sbc
匹配结果为:
123 +234 -345 456
完全符合预期,错误的+78等嵌入片段已被排除。
内容的提问来源于stack exchange,提问作者Hoang
相关产品推荐
相关产品推荐

