如何修改正则表达式以仅返回正负整数/浮点数的完整匹配结果
嗨,我来帮你搞定这个正则表达式的小问题~
你之前用的-?\d+(\.-?\d+)?之所以会生成Group 1,是因为里面的括号属于捕获组,它会把小数点和后面的小数部分单独存为一个分组结果。要实现只返回完整匹配、不生成额外捕获组的需求,只需要把这个捕获组改成非捕获组就可以了。
修改后的正则表达式
-?\d+(?:\.-?\d+)?
原理说明
(?:...)是非捕获组的语法,它的作用只是用来分组匹配规则,不会创建额外的捕获组(也就不会出现Group 1这类的多余结果)。- 这个修改完全保留了原正则的匹配能力:可以精准匹配正负整数、正负浮点数,不管是
112这类整数,还是-102.4、0.0这类浮点数都能正确提取。
实际测试效果
用你的测试字符串valueA:112,valueB:06 valueC:446977 valueD:0.0 valueE:-102.4,valueF:-15.7 valueG:9.8,修改后的正则能准确提取出以下完整数值:
- 112
- 06
- 446977
- 0.0
- -102.4
- -15.7
- 9.8
而且不会产生任何额外的捕获组结果,完美符合你的要求。
内容的提问来源于stack exchange,提问作者dk13
相关产品推荐
相关产品推荐

