1

次の文字列を一致させようとしています。

9
9.
9.5
.5

これは私がこれを達成するためにこれまでに作成したものです:

(?<acreage>(?(\d+)((\.\d*)?)|(\.\d+)))

9.5を渡すと、面積としてNULLと.5が返されます。9.5を返すために必要です。私は何が間違っているのですか?

4

2 に答える 2

2

したがって、4つの状況があります。

  1. 次のようなものに一致しますx
  2. 次のようなものに一致しますx.y
  3. 次のようなものに一致しますx.
  4. 次のようなものに一致します.y

だからここに行きます:

\d+\.\d+|\d+\.?|\.d+

最初のグループの数字をオプションにすることで、最後の2つの可能性のいずれかを取り除くことができますが、両方を取り除くことはできません。例えば:

\d*\.\d+|\d+\.?

または、マッチグループの場合:

(?<acreage>\d*\.\d+|\d+\.?)
于 2012-08-02T20:05:10.870 に答える
1

この正規表現を使用します

^(?=\.?\d+\.?\d*)\d*\.?\d*$

また

^(\d+\.\d*)|(\d*\.\d+)|(\d+)$

于 2012-08-02T20:08:06.343 に答える