次の文字列を一致させようとしています。
9
9.
9.5
.5
これは私がこれを達成するためにこれまでに作成したものです:
(?<acreage>(?(\d+)((\.\d*)?)|(\.\d+)))
9.5を渡すと、面積としてNULLと.5が返されます。9.5を返すために必要です。私は何が間違っているのですか?
次の文字列を一致させようとしています。
9
9.
9.5
.5
これは私がこれを達成するためにこれまでに作成したものです:
(?<acreage>(?(\d+)((\.\d*)?)|(\.\d+)))
9.5を渡すと、面積としてNULLと.5が返されます。9.5を返すために必要です。私は何が間違っているのですか?
したがって、4つの状況があります。
x
x.y
x.
.y
だからここに行きます:
\d+\.\d+|\d+\.?|\.d+
最初のグループの数字をオプションにすることで、最後の2つの可能性のいずれかを取り除くことができますが、両方を取り除くことはできません。例えば:
\d*\.\d+|\d+\.?
または、マッチグループの場合:
(?<acreage>\d*\.\d+|\d+\.?)
この正規表現を使用します
^(?=\.?\d+\.?\d*)\d*\.?\d*$
また
^(\d+\.\d*)|(\d*\.\d+)|(\d+)$