字符串C中的正则表达式匹配号码#
我试图从收据中使用正则表达式得到总价格。字符串C中的正则表达式匹配号码#
的格式是:
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 15.40
您最初的正则表达式正常工作与提供的文本:
TOTAL(\\s+)(?<value>[.0-9]+)
然而,正如你在评论中表示,这是由HTML和包含字符实体没有休息空间,所以你需要考虑那些以及:
TOTAL(\\s+|( )+)(?<value>[.0-9]+)
感谢您的示例,我已经从评论中提出了您的建议,并在执行正则表达式之前将其转换为纯文本,并且效果很好。 – 2013-03-12 10:44:58
@Downvoter - 谨慎评论? – Oded 2013-03-15 09:50:47
您可以使用:
"TOTAL *(\d*.\d*)"
在.NET中,'\ d'将匹配所有数字,而不仅仅是[[0-9]](例如,阿拉伯数字将匹配)。 – Oded 2013-03-12 10:21:39
您正则表达式的作品(检查您输入的建议),但它有一个小bug:它能够捕捉的数字和点任意组合(如333.3.2.22。 ...)更好的将是:
TOTAL\s+(?<value>\d+\.\d+)
谢谢你的建议,效果很好。 – 2013-03-12 10:42:36
(?(\b.*\b\s)([0-9.]*[0-9]))
应该工作。
我会建议你使用Regex hero online editor这对我来说至少是有帮助的。
为什么这比来自OP的正则表达式更好? – Oded 2013-03-12 10:22:48
适合我。我与包含“15.40”的捕获组匹配。检查你的输入。 – Oded 2013-03-12 10:15:11
好一点,我只用文字进行测试和它的作品,但我尽量把它弄出来的格式像这样的HTML文件:TOTAL 15.40或许正则表达式不看 作为空间 – 2013-03-12 10:21:30
HTTP:/ /txt2re.com/应该是你的新朋友。输出的正则表达式并不完美,但它给你一个很好的起点。 – RoadieRich 2013-03-12 10:21:57