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

标签 c# regex

我正在尝试编写一个正则表达式来匹配 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();

关于c# - 您如何编写匹配除第一次出现以外的所有内容的正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28568001/

相关文章:

c# - 设置使用 itextsharp 创建的 PDF 表格中的单元格高度

r - 通过 strsplit 使用非贪婪正则表达式拆分字符串

javascript - 正则表达式 101 : Check if a floating point number (e. g。 3.14159) 格式有效。(问题 11)

javascript - 将字符串中的非拉丁字符更改为拉丁字符

c# - 传递 orderBy 或 OrderByDescending 作为参数

c# - 在 XAML 中使用 System.Type

c# - Entity Framework DbSet<TEntity>.Where(e => true) 性能

java - 提取模式中的动态值并将其放入另一个模式中

javascript - 将人类可读的数字范围转换为正则表达式

c# - 实现 C# 业务对象 (CSLA)