Skip to main content
 首页 » 编程设计

c#之正则表达式仅捕获 [0-9] 数字,同时将数字与空格或逗号匹配

2024年01月13日41sky-heaven

我有一些类似的文字:

<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 安装。