2016-11-16 30 views
-1

我正在學習正則表達式。我的要求很簡單。這是我的正則表達式。正則表達式 - 捕獲組返回null爲非匹配字符串

([0-9]*)(\.)([0-9]*) 

我的意見是這樣的。

1.9 
2.8 
4.76 
3 
7.8 

我只想返回小數部分。我目前正在打印第三個捕獲組$ 3。輸出是這樣的。

9 
8 
76 
3 
8 

但我的預期輸出是這樣的。

9 
8 
76 

8 

請告訴我如何做到這一點。每當字符串不匹配我的$ 3返回整個字符串。我希望它返回null或任何其他默認值(如'0')。是否可以使用lookarounds來實現這一點?如果是這樣,怎麼樣?

+3

不,輸出肯定不同。請參閱[本演示](https://regex101.com/r/23teqX/1)。請分享代碼,如果第3組爲空,我認爲您會打印輸入內容。 –

+0

請用$ 3代替。你會得到我的輸出 – user2806971

+0

爲什麼「替代」?你想要*匹配*,而不是*替代「** **這個**後面的工具/語言/代碼是什麼? –

回答

0

我能夠使用以下正則表達式實現此目的。

正則表達式:(\d*)(\.)(\d+)|(^\d+$)()()

演示:Regex101 Demo

這是考慮到只有兩種情況。

  1. 具有小數部分的數字匹配並返回在組$3中捕獲。

  2. 沒有小數部分的數字,所以在組$3中捕獲零寬度。

注:如果有更多的測試案例,請在指定的問題。由於聲譽低下,我無法對此進行評論。