2013-01-12 119 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 
相关问题