2016-07-14 116 views
1

我有這個字符串[lat:50.000],我需要得到多少出來,但有時它可能在它的前面一個連字符,因爲它可能是一個負數的比賽數量。正則表達式,連字符和不

我已經得到了這個正則表達式[\-]\d+(\.\d{1,10})?但是它只會匹配數字,如果它在前面有連字符,我需要一個正則表達式,它會匹配和不使用連字符。所以我會留下50.000或在某些情況下-2.000

希望這是有道理的。

回答

1

使用這個表達式:\-?\d+\.\d{1,10}

+1

連字符甚至不需要轉義。 –

2

你需要一個量詞聲明,連字號是可選:

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

您也可以提高表達了一下,把連字符出來的字符類的(因爲它只是一個字符):

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

無需字符類,但是。它可能只是' - ?' – 4castle

+0

是的;我試圖不打擾原始正則表達式,所以我添加了另一個版本。 –

1

一個question mark quantifier?下一個字符或一組將表明塔t是可選的:

-?\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