正则表达式匹配带小数的数字

时间:2015-09-26 19:15:52

标签: c# regex

我有以下正则表达式:

var matches = Regex.Matches(s, @"ratingValue"" content=""(?<content>(?:(.|\n)(?!""></span>))+)");

但是,它为输出提供了“number。”,在.之后没有任何内容。例如,如果数字为4.0,则会输出4.,如果是3.5,则会提供3.

我怎样才能得到小数?

示例输入:

<span itemprop="ratingValue" content="4.0"></span>

我需要输出4.0

2 个答案:

答案 0 :(得分:3)

您可以使用LINQ to XML:

string xml = @"<span itemprop=""ratingValue"" content=""4.0""></span>";

string content = XElement.Parse(xml).Attribute("content").Value;

decimal value = Convert.ToDecimal(content, CultureInfo.InvariantCulture);

答案 1 :(得分:0)

我已经更改了你的正则表达式,所以它返回十进制数作为匹配:

var matches = Regex.Matches(s, @"(?:ratingValue"" content="")(?<content>[\r\n\d\.]*)(?:""></span>)");

这是你追求的吗?它从提供的样本中返回4.0。