我有一些类似的文字:
<span id="myspan">2,500</span>
<span id="myspan">500</span>
我需要一个正则表达式模式来仅匹配数字。 因此,我对上述匹配项的输出将是:
- 2500
- 500
我试过这个:
(?:\<\bspan\b.*?\bmyspan\b.*?\>)(?<numbers>[,0-9].*?)(?:\</\bspan\b\>)
还有这个
(?:\<\bspan\b.*?\bmyspan\b.*?\>)(?<numbers>[0-9].*?)(?:\</\bspan\b\>)
请您参考如下方法:
看来你走错了路。基本上,正则表达式 is not the best tool用于解析 HTML。
有时可以应用 XML 解析器,但并非总是如此,因为 html 内容在 xml 方面的格式通常不正确,因此 xml 解析器无法对其进行解析。
但是,使用 Html Agility Pack 很容易实现您的目标.
var s = "<span id=\"myspan\">2,500</span><span id=\"myspan\">500</span>";
var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(s);
foreach (var node in doc.DocumentNode.ChildNodes.Where(n => n.Name == "span"))
{
string value = node.InnerHtml;
// here you can transform string value to integer and so on
Console.WriteLine(value);
}
注意:Html Agility 包也可以作为 NuGet 包与 Visual Studio 安装。
