字符串C#中的正则表达式匹配编号

时间:2013-03-12 10:12:46

标签: c# regex

我想从Regex的收据中获取总价。

格式为:

TOTAL     15.40

目标只是让价格超出字符串。

我从TOTAL[ .0-9]开始,但这只返回了TOTAL这个词。

我用Google搜索并将这个推到一起,但无法让它工作:

TOTAL(\\s+)(?<value>[.0-9]+)

我制作了以下代码:

sRegex = "TOTAL(\\s+)(?<value>[.0-9]+)";    
Match match = Regex.Match(this.sHTMLResult, sRegex, RegexOptions.None);
if (match.Success)
    Console.Out.WriteLine("regex good");
else
    Console.Out.WriteLine("regex fail");

但是正则表达式并没有成功。

我尝试将其从格式如下的HTML文件中删除:

TOTAL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;15.40

5 个答案:

答案 0 :(得分:1)

您可以使用:

"TOTAL *(\d*.\d*)"

答案 1 :(得分:1)

您的初始正则表达式可以正常使用提供的文本:

TOTAL(\\s+)(?<value>[.0-9]+)

但是,正如您在评论中指出的那样,这是来自HTML并包含没有中断空格的字符实体,因此您还需要考虑这些:

TOTAL(\\s+|(&nbsp;)+)(?<value>[.0-9]+)

答案 2 :(得分:0)

你的正则表达式有效(按照建议查看你的输入),但它有一个小错误:它会捕获任何数字和点的组合(如333.3.2.22 ....)更好的一个是:

TOTAL\s+(?<value>\d+\.\d+)

答案 3 :(得分:0)

(?(\b.*\b\s)([0-9.]*[0-9]))应该有用。

我建议您使用至少对我有帮助的Regex hero online editor

答案 4 :(得分:-2)

如果在TOTAL和数量之间只有一个空格,则可以在正则表达式中使用空格。另外,试试这个:

sRegex = "TOTAL ([0-9]+\.[0-9]+)";

有关MSDN参考信息,请参阅here