2012-11-06 13 views
5

浮動小数点数に一致する正規表現を定義するのに問題がありますが、整数を特定することはできません。正規表現は浮動小数点数に一致しますが、整数ではありません

浮動小数点数に一致する以下の正規表現があります。

(\+|-)?([0-9]+\.?[0-9]*|\.[0-9]+)([eE](\+|-)?[0-9]+)? 

上記の式を整数と一致させないように修正するにはどうすればよいですか?ここで

が一致しなければならないものの例です。

3.3 
.3 
5E6 
.2e-14 
7E+3 
4. 
5.E2 
1e2 
+0

ご確認ください。:。。唯一 '#を.'、' ## ''# '、'#1 .Eの# '、' ##の電子の# 'と。 '。#e#'は一致するはずですか? – sp00m

+0

はい、そうです。 – mrjasmin

+0

http://www.regular-expressions.info/floatingpoint.htmlを参照してください。 –

答えて

9

あなたの正規表現の風味が先読みをサポートしている場合は、番号の終了前に浮動小数点文字のいずれかが必要です。

((\+|-)?(?=\d*[.eE])([0-9]+\.?[0-9]*|\.[0-9]+)([eE](\+|-)?[0-9]+)? 

Additional reading.

ここでもやや最適化されたバージョン:

[+-]?(?=\d*[.eE])(?=\.?\d)\d*\.?\d*(?:[eE][+-]?\d+)? 

オプションの+または-から始めます。次に、任意の桁数の後に、.eまたはEのいずれかの文字が必要です。次に、文字列の前後に少なくとも1桁の数字が必要です。数字と一致するのは、オプションの.とそれ以上の数字です。次に、(完全にオプションの)またはEとオプションの+または-と1つ以上の数字。

+0

最初の[ - [' - +]?(?= \ d * [.eE])のワイルド' \??[0-9] * | \。[0-9] +)([eE] [+ - ]?[0-9] +)?]](https://regex101.com/r/7xruwB/1) –

0

この1つはあなたのニーズに合う必要があります。

[+-]?([0-9]+\.([0-9]+)?|\.[0-9]+)([eE][+-]?[0-9]+)? 
+0

'1e2'はマッチしますか? –

+0

@MarkDickinson' 1e2'はマッチしません1.e2'と '.1e2'は一致します – sp00m

+0

そうです、' 1e2'は通常有効です浮動小数点の表現であるので、OPがそれを一致させたいと思うでしょう。しかし、質問からは明らかではありません。あなたの答えではなく、質問に上記のコメントを載せておかなければなりません。 –

関連する問題