2016-07-14 11 views
1

この文字列は[lat:50.000]ですが、番号を取得する必要がありますが、正面にハイフンがある場合があります。正規表現、ハイフンなしの数字と一致する

私はこの時点で[\-]\d+(\.\d{1,10})?を持っていますが、正面にハイフンが付いている場合にのみ番号に一致します。ハイフンの有無にマッチする正規表現が必要です。だから、私は50.000とか、場合によっては-2.000とかになります。

希望はこれが理にかなっています。

[\-]?\d+(\.\d{1,10})? 

あなたはまた、表現を少し向上させることができますし、(それだけで一つの文字なので)文字クラスの外にハイフンを入れて:

答えて

1

使用この正規表現:\-?\d+\.\d{1,10}

+1

ハイフンはエスケープする必要もありません。 –

2

あなたはハイフンがオプションであることを述べること数量詞を必要

-?\d+(\.\d{1,10})? 
+0

しかし、文字クラスは必要ありません。それはちょうど ' - ? 'である可能性があります – 4castle

+0

はい、私は元の正規表現を妨害しないようにしていたので、別のバージョンを追加しました。 –

1

文字またはグループ以下question mark quantifier?は、股関節を示しますそれはオプションです:

-?\d+(\.\d{1,10})? 

これは、{0,1}限定記号を使用するのと同じです。ここで

+0

パーフェクトに感謝​​:) –

+0

ハイフンからエスケープを削除することもできます。 –

+0

ありがとう、それはOPの元の文字グループを削除した結果ですが、エスケープを打ち消すことは無視しています。 –

0

は、単純な式

\-?\d*\.?\d* 
1

さらに別のいずれかになります。

(-?\d[\d.,]+) 
# - or not (optional) 
# followed by at least a digit 
# followed by digits, dots and commas 

a demo on regex101.comを参照してください。

関連する問題