VB.net在<span>标签内提取变量值?

时间:2017-12-12 16:31:33

标签: html regex vb.net

我正在尝试使用VB.net提取可能与HTML内部不同的十进制值。

作为一种测试,这是我正在使用的代码:

 Dim result As String = "<td class='fl'><label>Balance:</label></td><td nowrap class='fd'><span>$999,999.99</span></td></tr></table></td>"
 Dim RegexResult = Regex.Match(result, "^(\$|)([1-9]\d{0,2}(\,\d{3})*|([1-9]\d*))(\.\d{2})?$")
 Console.WriteLine(RegexResult)

仅供参考,我在这里找到了表达方式:

在此示例中,提取的结果应为:$999999.99。然后将对其进行修改以剥离美元符号。

在Visual Studio控制台中查看时,正则表达式结果为{}。如何修改表达式以考虑<span>标记?

1 个答案:

答案 0 :(得分:0)

即使您的正则表达式现在可以使用,也不要使用正则表达式来解析动态HTML内容。

使用可用的HTML解析器,如HtmlAgilityPack,这是一个更可靠的解决方案:

Dim html = "<td class='fl'><label>Balance:</label></td><td nowrap class='fd'><span>$999,999.99</span></td></tr></table></td>"
Dim doc As New HtmlAgilityPack.HtmlDocument()
doc.LoadHtml(html)
Dim td = doc.DocumentNode.SelectSingleNode("//*[contains(@class,'fd')]")
Dim spanText = td.Descendants("span").First().InnerText
Dim balance As Decimal
Dim usCulture = New CultureInfo("en-us")
Dim valid = Decimal.TryParse(spanText, NumberStyles.Currency, usCulture, balance)