我正在尝试匹配以下字符串:
9
9.
9.5
.5
这是我迄今为止制作的湿粪便来实现这一目标:
(?<acreage>(?(\d+)((\.\d*)?)|(\.\d+)))
当我通过9.5时,它返回NULL和.5表示种植面积。我需要它传回9.5。我做错了什么?
答案 0 :(得分:2)
所以你有四种情况:
x
x.y
x.
.y
所以你走了:
\d+\.\d+|\d+\.?|\.d+
您可以通过将第一组中的数字设为可选,但不是两者来摆脱最后两种可能性中的任何一种。例如:
\d*\.\d+|\d+\.?
或者,与匹配组:
(?<acreage>\d*\.\d+|\d+\.?)
答案 1 :(得分:1)
使用此正则表达式
^(?=\.?\d+\.?\d*)\d*\.?\d*$
或
^(\d+\.\d*)|(\d*\.\d+)|(\d+)$