正则表达式如何在不同的匹配组中匹配两个相似的数字?

时间:2015-09-28 12:15:28

标签: regex

我收到了以下字符串:

  

[13:49:38 INFO]:总体:平均滴答时间: 4.126 ms。平均TPS:   的 20.000

应该匹配粗体数字,每个数字都放在自己的捕获组中。

我当前的表达式是(\d+.\d{3}),其匹配 4.126 如何才能将我的20.000现在与第二个捕获组匹配?再次添加相同的捕获组使它找不到任何东西。所以我基本上需要的是,“搜索第一个数字,然后忽略所有内容,直到找到下一个数字。”

1 个答案:

答案 0 :(得分:1)

您可以使用类似的内容:(\d+\.\d{3}).+?(\d+\.\d{3})$(示例here)这实际上是您的正则表达式(加上一个小修复)两次,不同之处在于它也会再次查找相同的模式字符串的结尾。

另一个小注,你的正则表达式包含一个潜在的问题,你将小数点与句点字符匹配。在正则表达式语言中,句点字符表示任何字符,因此您的表达式也匹配4s222。在前面添加额外的\会使正则表达式引擎视为实际角色,而不是特殊角色。