如何提取正则表达式反向引用的值?

时间:2012-11-29 20:18:39

标签: .net html regex vb.net

所以我多年来一直在使用正则表达式,主要是在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> 

然而,我无法让它发挥作用。 RegEx Hero网站似乎验证了正则表达式,所以我猜测问题出在我的代码中。我在网上跟踪了很多例子,但总是遇到某种错误。更糟糕的是,我正在使用记事本开发此脚本:p

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

1 个答案:

答案 0 :(得分: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