2016-12-07 61 views
1

我想編寫一些代碼來檢查用戶輸入是否與特定格式匹配。格式爲's'後跟一個空格和一個數字,如果輸入是「s 1 2 3 4」,它會調用某個函數。 「1 2」也是可以接受的。到目前爲止,我發現,這個正則表達式工程的時候指定金額:Java特定的正則表達式

if (inputLine.matches("s \\d+ \\d+")) { } 

作品2號的S之後,但我需要能夠在S後接受任何數量的數字。 任何想法都適合我的需求的正則表達式?謝謝

+2

試試這個。 「s(\\ d +)+」前面有一個空格 – rafid059

回答

4

您正則表達式更改爲

if (inputLine.matches("s(?: \\d+)+")) { } 

匹配s,空間和空間的序列1+與跟隨1+數字。

如果在s之後允許使用0個數字,請將最後一個+量詞替換爲*以匹配零個或多個匹配項。

由於重複捕獲組覆寫該組的內容,在這裏使用捕獲組,因此,我建議使用非捕獲之一,(?:...)是沒有意義的。

+0

男人,你總是這麼快就這些正則表達式問題! – rafid059

+0

@RafiduzzamanSonnet:我從[@AvinashRaj](http://stackoverflow.com/users/3297613/avinash-raj)瞭解到。 –

+0

我從你身上看到的大部分答案都是「(?:」),我認爲「?」的意思是「零」或「一」,你能指點我一個很好的資源嗎?:) – rafid059