使用Regex从html链接获取"标题"属性

She*_*eff 0 .net html c# regex

我有以下正则表达式匹配从我们的自定义cms生成的页面上的所有链接标记

<a\s+((?:(?:\w+\s*=\s*)(?:\w+|"[^"]*"|'[^']*'))*?\s*href\s*=\s*(?<url>\w+|"[^"]*"|'[^']*')(?:(?:\s+\w+\s*=\s*)(?:\w+|"[^"]*"|'[^']*'))*?)>.+?</a>
Run Code Online (Sandbox Code Playgroud)

我们使用c#循环遍历所有匹配项,并在呈现页面内容之前为每个链接添加onclick事件(用于跟踪软件).我需要解析链接并向onclick函数添加一个参数,即"链接名称".

我打算修改正则表达式以获得以下子组

  • 链接的title属性
  • 如果链接包含图像标记,请获取图像的替代文本
  • 链接的文字

然后,我可以检查每个子组的匹配,以获取链接的相关名称.

我如何修改上述正则表达式来执行此操作,还是可以使用c#代码实现相同的思路?

Cha*_*ens 6

正则表达式在解析HTML方面基本上是不好的(参见你能提供一些为什么难以用正则表达式解析XML和HTML的例子吗?).你需要的是一个HTML解析器.请参阅您是否提供了使用您喜欢的解析器解析HTML的示例?例如,使用各种解析器.

特别是您可能对HTMLAgilityPack答案感兴趣.