Gre*_*rad 1 .net c# regex parsing
我有一些类似的文字:
<span id="myspan">2,500</span>
<span id="myspan">500</span>
Run Code Online (Sandbox Code Playgroud)
我需要一个正则表达式模式以仅匹配数字。因此,以上匹配的输出为:
我已经试过了:
(?:\<\bspan\b.*?\bmyspan\b.*?\>)(?<numbers>[,0-9].*?)(?:\</\bspan\b\>)
Run Code Online (Sandbox Code Playgroud)
和这个
(?:\<\bspan\b.*?\bmyspan\b.*?\>)(?<numbers>[0-9].*?)(?:\</\bspan\b\>)
Run Code Online (Sandbox Code Playgroud)
看来您走错了路。基本上,正则表达式不是解析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);
}
Run Code Online (Sandbox Code Playgroud)
注意:HTML Agility包也可以与Visual Studio一起安装为NuGet包。