You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#正则匹配转义引号包裹的src/href指定后缀资源链接

解决C#中捕获HTML转义引号包裹的src/href资源链接问题

正则表达式方案

针对你的需求,以下正则可以精准匹配被转义引号包裹、属于src或href属性且带有指定后缀(pdf/jpg/png/gif)的资源链接:

string pattern = @"(?<=src=\\\""|href=\\\"").*?\.(?:pdf|jpg|png|gif)(?=\\\")";

正则逻辑解释

  • (?<=src=\\\""|href=\\\""):正向预查,确保匹配内容的前缀是src=\"或href=\",限定只匹配这两个属性内的链接
  • .*?:非贪婪模式匹配任意字符,避免过度匹配到属性外的内容
  • \.(?:pdf|jpg|png|gif):匹配指定的文件后缀,使用非捕获组减少不必要的分组开销
  • (?=\\\"):正向预查,确保匹配内容的后缀是转义引号\",保证只捕获属性值内部的链接

C#代码示例

using System;
using System.Text.RegularExpressions;

public class ResourceLinkExtractor
{
    public static void Main()
    {
        // 模拟从JSON读取的HTML字符串(包含转义引号)
        string htmlFromJson = "<a href=\"http://www.mysite.no/webdocs/mypdf.pdf\">Download</a><img src=\"http://www.mysite.no/assets/photo.png\" title=\"photo.png\">";
        
        string pattern = @"(?<=src=\\\""|href=\\\"").*?\.(?:pdf|jpg|png|gif)(?=\\\")";
        MatchCollection matches = Regex.Matches(htmlFromJson, pattern);
        
        foreach (Match match in matches)
        {
            Console.WriteLine("捕获到的资源链接: " + match.Value);
        }
    }
}

运行结果:

捕获到的资源链接: http://www.mysite.no/webdocs/mypdf.pdf
捕获到的资源链接: http://www.mysite.no/assets/photo.png

可以看到,title属性中的photo.png不会被匹配,完全符合需求。

之前尝试的问题分析

  1. 第一个正则未限定src/href属性范围,会匹配所有转义引号内的带后缀内容(比如alt/title属性值),导致错误捕获。
  2. 第二个正则使用[^\s]*贪婪匹配,且未限定结束的引号边界,会过度捕获到属性外的标签内容,出现错误匹配。

内容的提问来源于stack exchange,提问作者Greger Gundersen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 16:15:03