通过拆分正则表达式从Java中的String中提取数字
发布时间:2020-12-14 06:23:14 所属栏目:百科 来源:网络整理
导读:我想从字符串中提取数字,如下所示: String numbers[] = "M0.286-3.099-0.44c-2.901,-0.436,123,0.123,.34".split(PATTERN); 从这样的字符串我想提取这些数字: 0.286 -3.099 -0.44 -2.901 -0.436 123 0.123 .34 那是: 可能有垃圾字符,如“M”,“c”,“c”
我想从字符串中提取数字,如下所示:
String numbers[] = "M0.286-3.099-0.44c-2.901,-0.436,123,0.123,.34".split(PATTERN); 从这样的字符串我想提取这些数字: > 0.286 那是: >可能有垃圾字符,如“M”,“c”,“c” 到目前为止我所拥有的: String PATTERN = "([^d.-]+)|(?=-)"; 这在某种程度上起作用,但显然远非完美: >在示例中不跳过起始垃圾“M” 如何修复PATTERN以使其工作?
你可以使用这样的正则表达式:
([-.]?d+(?:.d+)?) Working demo 比赛信息: MATCH 1 1. [1-6] `0.286` MATCH 2 1. [6-12] `-3.099` MATCH 3 1. [12-17] `-0.44` MATCH 4 1. [18-24] `-2.901` MATCH 5 1. [25-31] `-0.436` MATCH 6 1. [34-37] `123` MATCH 7 1. [38-43] `0.123` MATCH 8 1. [44-47] `.34` 更新 Jawee的方法 正如Jawee在他的评论中指出的那样.34.34存在问题,所以你可以使用他的正则表达式解决这个问题.感谢Jawee指出这一点. (-?(?:d+)?.?d+) 要了解这个正则表达式背后发生的事情你可以查看Debuggex 发动机说明: 1st Capturing group (-?(?:d+)?.?d+) -? -> matches the character - literally zero and one time (?:d+)? -> d+ match a digit [0-9] one and unlimited times (using non capturing group) .? matches the character . literally zero and one time d+ match a digit [0-9] one and unlimited times (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |