0

我正在尝试从使用 Regex 的收据中获取总价。

格式为:

TOTAL     15.40

目标只是从字符串中获取价格。

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

我四处搜索并将这个放在一起,但无法让它工作:

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
4

5 回答 5

1

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

我建议你使用Regex hero 在线编辑器,它至少对我很有帮助。

于 2013-03-12T10:21:31.720 回答
1

您可能会使用:

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

于 2013-03-12T10:19:28.040 回答
1

您的初始正则表达式适用于提供的文本:

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

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

TOTAL(\\s+|(&nbsp;)+)(?<value>[.0-9]+)
于 2013-03-12T10:26:24.910 回答
0

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

TOTAL\s+(?<value>\d+\.\d+)
于 2013-03-12T10:19:40.293 回答
-2

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

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

有关 MSDN 参考,请参见此处

于 2013-03-12T10:16:51.050 回答