我正在努力学习正则表达式。我已创建此/(\d?\.?\d?)/g
以提取逗号分隔的浮点数列表中的所有数字。像这样:
1,2.2,3,4,5,6,7,8,9,10
https://regex101.com/r/aJ3eF2/2
但是这种模式会在想要的匹配中产生空匹配。
MATCH 1
1. [0-1] `1`
MATCH 2
1. [1-1] ``
MATCH 3
1. [2-5] `2.2`
MATCH 4
1. [5-5] ``
我想明白为什么会这样?以及如何解决它。
答案 0 :(得分:1)
您应该使用此正则表达式来解决此问题:
(\d+(?:\.\d+)?)
或更好地使用字词边界:
(\b\d+(?:\.\d+)?\b)
你的正则表达式提供空匹配,因为你的正则表达式(\d?\.?\d?)
包含所有可选,即数字和小数点后面的数字。您还需要使用量词+
使其匹配小数点两边的多个数字。
(?:...)
使其成为非捕获组。
答案 1 :(得分:1)
如果您不希望.001
使用(\d+\.?\d+)