2015-08-30 43 views
1

我以爲我把它與[0-9]結合起來,但是當我運行它時只有一個數字。我需要正則表達式來只接受字符串中的數字

串去,例如:

1 note 
1,234 notes 
68,000 notes 

我想它,所以它需要整數和遺漏了筆記部分和空間,也是逗號所以才完整號碼。

即使沒有逗號,[0-9]也只會取第一個字符串。

那麼如何只取號碼?

+0

你的意思是? '\ d +(?:,\ d +)*'? –

回答

2

[0-9]表示09之間的任何一個字符。你正在尋找的是這些角色重複任意次數,但沒有其他角色應該在那裏。正確的寫法是[0-9]+

M+,其中M是一些正則表達式規則相當於M M*,其中*表示0 or more occurrences。因此M+可以推斷爲由M指定的部分的至少一次出現。

編輯:現在的問題還指出,應讀取整個數字,但逗號應排除在輸出。 AFAIK,這是不可能使用正則表達式完成的,因爲匹配的文本不能與存儲的文本不同。可能的解決方案是將,添加到允許的字符列表中,並解析結果以便稍後刪除它們。

+0

好吧,很酷的數字少於1000.但是,如果正則表達式中的逗號像1,234那樣,正則表達式會如何獲得數字?因爲我剛剛嘗試了19,000,而它只有19。是的,沒有biggy只能得到包含逗號的數字,因爲我可以在之後進行替換。 – programminglearner

+1

@programminglearner將','添加到允許的字符列表應該可以工作。所以'[0-9,]'應該工作。請注意,這將匹配其他數字,例如'23,52,2,1'。你應該問問你自己是否會發生這種情況。如果需要,可以更多地改進正則表達式以限制其表達能力。 – therainmaker

+0

編輯:好吧,我明白了:):[0-9] +,[0-9] + 感謝您的信息。 編輯:啊我看你的方式是更緊湊:)所以用這個。乾杯。 – programminglearner

相關問題