0

.NET 4.0では、正規表現は何をしますか?

"^ABC(: ([^=]+(?<! )=(?! )[^,]+(?<! )(,(?! )|$))+)?$"

に一致しますか?

いくつかのサンプル例は非常に役立ちます。

私は次の結果に非常に驚いています。上記の式は、「ABC: X=12,Y=1.79769313486232E+308」に一致します。しかし、「ABC: X=12,Y=1,79769313486232E+308」では失敗します。唯一の違いは、倍精度数の小数点記号です。

ありがとう。

4

2 に答える 2

1

Look at the [^,] that basically says that after the = (=(?! )) match anything that doesn't have a , in it.

The Regex is not really elegant:

Even something like ABC would match. Something like ABC: X=1Y=1 would also match. I would say, don't use this and assemble a proper regex for what you need.

于 2011-05-13T14:48:59.433 に答える
0

あなたが言った:

上記の式は、ABC:X = 12、Y = 1.79769313486232E + 308 "と一致しますが、" ABC:X = 12、Y = 1,79769313486232E+308"では失敗します。

コンテキストがないと、上記の文字列を照合する目的が何であるかはわかりませんが、最初の文字列を照合することが完全に正当であり、2番目の文字列を照合することが完全に正当である理由はわかります。

の形式は1.79769313486232E+308、非常に大きな数の科学的記数法です(+308は、基本的に小数点を308桁右に移動することを意味します)。ドットを含む正当な数値ですが、コンマを含むものではありません。

一部のロケールではドットではなくコンマを10進文字として使用する場合があることは事実ですが、この形式の数値を使用するプログラミング言語やその他のコンピューターアプリケーションと同様に、科学的記数法はドットを使用するように標準化されています。ドットになるように強制し、コンマが使用されないようにします。

これが重要である理由を示すために、この例でコンマを許可すると、の値のY終わりを示すためにコンマがすでに使用されているため、X代わりにコンマを使用して、の値がどこで終了するかについてあいまいさが生じます。のポイントYの値は、の値がであるとコンピュータに思わせる可能性がありますY1、これは正しくありません。

于 2011-05-13T14:53:47.323 に答える