2012-11-29 85 views
2

所以我一直在使用正则表达式多年,主要是在PHP环境中,但我正在使用VB .NET脚本引擎(我有VB体验,但就是这样)的一个小项目,并且有一些真实问题确实很重要。如何提取正则表达式反向引用的值?

我有一个变量,它具有加载的HTML文件的内容,并且我想提取某个标记的值。

例子:

<span id="temp" class="up"><span class="up">76.4</span></span> 

上的变化为基于.NET的正则表达式的学习后,这是我想出了(向引用1让我捕捉到这个数字):

<span id="temp" class="(?:up|down)"><span class="(?:|up|down)">([0-9]+\.[0-9]{1})</span> 

但是,我无法得到这个工作。正义英雄网站似乎验证正则表达式,所以我猜测问题是与我的代码。我在网上跟随了很多例子,但总是遇到某种错误。更糟糕的是,我正在使用记事本开发此脚本:p

有人可以请我提供一个可用的VB .NET脚本示例来提取该数字吗?目标是用该数字替换该HTML变量中的所有文本。

+1

你的正则表达式很好,所以你可能是正确的,它是你的代码。发布你的尝试。 –

回答

0

你的表情似乎是有效的。我唯一要添加的是一个数字命名组。试试这个:

Dim input = "<span id=""temp"" class=""up""><span class=""up"">76.4</span></span>" 
Dim regex = New Regex("<span id=""temp"" class=""(?:up|down)""><span class=""(?:|up|down)"">(?<number>[0-9]+\.[0-9]{1})</span>") 
Dim number = regex.Match(input).Groups("number").Value 

它应该让你76.4

还有一件事 - 当解析HTML时,它总是更好的to use HTML parser instead of regexes。我建议HtmlAgilityPack

+0

谢谢,这个问题是我的代码,我想我看了太多的例子,最后得到了Frankenstein代码。你的例子很简单,并且帮助解释了如何访问这些数据。我会投你一票,但没有足够的代表。 –