Skip to main content
 首页 » 编程设计

c#之您如何编写匹配除第一次出现以外的所有内容的正则表达式

2024年02月06日29JustinYoung

我正在尝试编写一个正则表达式来匹配 html 文件中除第一个图像标签之外的所有图像标签。例如:

<html><body><img src="foo"><span><img src="bar></span><img src="foobar"></body></html> 

到目前为止,我只设法创建了一个匹配所有图像标签的表达式:

<img[^>]*> 

请您参考如下方法:

只需使用真正的 html 解析器,如 HtmlAgilityPack解析 html

var html = @"html><body><img src=""foo""><span><img src=""bar""></span><img src=""foobar""></body></html>"; 
var doc = new HtmlAgilityPack.HtmlDocument(); 
doc.LoadHtml(html); 
 
var imgLinks = doc.DocumentNode 
                    .Descendants("img") 
                    .Skip(1) 
                    .Select(x => x.Attributes["src"]) 
                    .ToList(); 

不要这样做

var pattern = @"<img[^>]*>"; //your pattern in question 
var imgs = Regex.Matches(html, pattern) 
                .Cast<Match>() 
                .Skip(1) 
                .Select(m => m.Value) 
                .ToList();