2013-01-12 160 views
1

我想知道一個字符串是否以數字結尾(有/無小數)。如果結束,我想提取它。正則表達式的字符串結尾的數字?

"Test1" => 1 
"Test" => NOT FOUND 
"Test123" => 123 
"Test1.1" => 1.1 

我錯過了一些細節。
1.在數字之前,字符串可以包含特殊字符
2.它是單行而不是多行。 @"\d$":如果你想數字只用這一個(?<=[a-zA-Z]+)\d+([,.]\d+)?\b$

+1

'@「( - [0-9] +(?:?:\。[0-9] + )?)$「' – Esailija

+0

你對最後一個數字前面的字符串有什麼期望 - 只是字母或基本上任何東西? –

+0

字母,特殊字符 – Tilak

回答

1

使用這個表達式[a-zA-Z]+\d+([,.]\d+)?\b$ 。使用http://regexpal.com/來嘗試正則表達式。

當然,這只是告訴你,最後一個字符是一個數字。它不會捕獲除最後一個字符以外的任何內容。爲了捕獲這個數字,只需要這個:@"\d*\.?\d+$"

如果您的字符串可能更復雜,例如「Test1.2 Test2」,並且您想要兩個數字:@"\d*\.?\d+\b"

2

一個正則表達式以數字結尾的字符串

+0

這不起作用 - 請參閱OP的最後一個示例 –

+0

@JoannaTurban正則表達式也適用於最後一個示例。它只是檢查字符串中的最後一個字符是否是數字。 –

+0

@Esailija啊我誤解了,我以爲他想知道字符串是否以數字結尾。在那種情況下,他可以抓住整個繩子,是我的推理! –

6

給這個圖案的嘗試,

\d+(\.\d+)?$ 
2

相配線開始,在字符串的結束後,任何字符和一個數字(帶有可選的小數部分)(允許尾隨空白字符)。第一部分是一個懶惰的匹配,即它將匹配最小的字符數,可能會將整個數字留給表達式的最後部分。

^.*?(\d+(?:[.,]\d+)?)\s*$ 

我的測試用例

"Test1 
"Test 
"Test123 
"Test1.1 
test 1.2 times 1 is 1.2 
test 1.2 times 1 is ? 
test 1.2 times 1 is 134.2234 
1.2 
相關問題