正则表达式仅在捕获带有空格或逗号的数字时捕获[0-9]个数字

Gre*_*rad 1 .net c# regex parsing

我有一些类似的文字:

<span id="myspan">2,500</span>
<span id="myspan">500</span>
Run Code Online (Sandbox Code Playgroud)

我需要一个正则表达式模式以仅匹配数字。因此,以上匹配的输出为:

  • 2500
  • 500

我已经试过了:

(?:\<\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)

And*_*yev 5

看来您走错了路。基本上,正则表达式不是解析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包。