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