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

标签 .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 变量中的所有文本。

最佳答案

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

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 .

关于.net - 如何提取正则表达式反向引用的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13634001/

相关文章:

c# - 在 sql 查询中使用 .net Datetime

c# - 管理大量数据(高度数据)并替换这个巨大数组的最有效方法是什么?

c# - 在不跳过 PostSharp 的情况下在构建时安静下来 PostSharp 警告

javascript - 如何使用 jQuery 添加另一个对象的高度作为边距?

Javascript正则表达式匹配所有单词对

c# - 如何检查默认的 DateTime 值?

math - 给定一个角度,我如何使用 x 和 y 找到行进线的逻辑? (数学难题)

javascript - 使用 PHP 的通用网站爬虫

php - 将数组中所有字符串的所有点分隔子字符串填充为相同长度

regex - 从 csv 文件的整数字段中删除文本