我想连续解析 12 个(通常)不同的浮点数的字符串(前面有一些不相关的文本,标记一个字段),并希望它们都以自己的捕获组结束,以便从一次匹配一个。我注意到我通过编写以下内容取得了成功:
Pattern lastYearIncomePattern = Pattern.compile("(.+\\{\\s)([0-9]{1,2}\\.[0-9]{3}\\s)([0-9]{1,2}\\.[0-9]{3}\\s)([0-9]{1,2}\\.[0-9]{3}\\s)([0-9]{1,2}\\.[0-9]{3}\\s)([0-9]{1,2}\\.[0-9]{3}\\s)([0-9]{1,2}\\.[0-9]{3}\\s)([0-9]{1,2}\\.[0-9]{3}\\s)([0-9]{1,2}\\.[0-9]{3}\\s)([0-9]{1,2}\\.[0-9]{3}\\s)([0-9]{1,2}\\.[0-9]{3}\\s)([0-9]{1,2}\\.[0-9]{3}\\s)([0-9]{1,2}\\.[0-9]{3}\\s)");
这是大量重复的代码。该部分([0-9]{1,2}\\.[0-9]{3}\\s)
将出现 12 次。
有没有办法更好地做到这一点?我已经考虑为自己定义该字符串,然后通过一些循环和 StringBuilder 将其添加到正则表达式中,但这一切似乎都太过分了。显然反向引用也不起作用,因为这 12 个值是不同的。
我的第一种方法是写([0-9]{1,2}\\.[0-9]{3}\\s){12}
,但这会将所有 12 个浮点数放在一个长字符串中,这不是我想要的,因为我需要另一个 Pattern 来一个接一个地挑选浮点数,然后是重复疯狂的解决方案是首选。
谢谢