如何在System.Text.RegularExpressions.Regex中找到整数或小数

时间:2013-03-18 12:11:04

标签: c# regex string

C#中的Text.RegularExpressions.Regex类,在这个类中我试图找到包含“years”字的字符串

 string s11 ="java developer in new york 2years exp"

在我使用之前

Regex = new Regex("(\d+)(years?)");

这里我在给定的s11字符串中获取内部值,如

Match match = regex.Match(ss);

if(match.Success)
{
    string s = match.Groups[1];
    string s1 = match.Groups[2];
}

但是这个只适用于整数,假设我改变了我的字符串,如:

string s11="java developer in new york 0.10years exp"

它停止工作。

我希望使用整数或小数,如

    string s11="java developer in new york 2years exp"
    string s11="java developer in new york 0.10years exp"

任何机构都可以为这个问题提供正确的解决方案;那就是寻找整数和十进制值。

由于 普拉迪普

3 个答案:

答案 0 :(得分:2)

你的很近;我想如果你只是添加可选的小数部分:

Regex = new Regex("((?:\d*\.)?\d+)(years?)");

答案 1 :(得分:1)

怎么样?

Regex = new Regex("([0-9]?\.?\d+)\s*(years?)");

此外,还有许多工具可以让您以交互方式进行尝试,例如

http://visualstudiogallery.msdn.microsoft.com/16b9d664-d88c-460e-84a5-700ab40ba452

答案 2 :(得分:1)

试试这个

new Regex(@"([0-9]*\.[0-9]+|[0-9]+)*years");

此外,为了将来参考,http://regexpal.com/是测试正则表达式的简单工具,http://www.regular-expressions.info提供了大量示例。