【问题标题】:REGEX to match relative urls inside href attribute in a html file正则表达式匹配html文件中href属性内的相对url
【发布时间】:2022-02-05 22:51:43
【问题描述】:

我正在制作一个 c# 代码,当用户单击一个按钮时,它使用用户输入的路径,在 Richtextbox 中输入的 HTML 代码的 href 和 src 属性中转换相对于绝对 URL。我需要一个只匹配 href 和 src 属性中的相对 URL 并将它们转换为绝对 URL 的正则表达式。这就是我想要实现的目标: 例子: 如果用户输入的路径:https://example.com/page Richtextbox中的html代码是:

<a href="https://example.com">click</a>
<a href="page1.html">click</a>
<img src="/img1.png" />
<img src="../img2.png" />

这是我想要的 html 代码的结果:

<a href="https://example.com">click</a> //this doesn't change
<a href="https://example.com/page/page1.html">click</a>
<img src="https://example.com/page/img1.png" />
<img src="https://example.com/img2.png" />

我只能想出匹配 href 属性的正则表达式。href=(["])(.?)\1 但我想不出一个可以完成上述工作的正则表达式(相对于绝对值)。

【问题讨论】:

    标签: c# html regex url relative-path


    【解决方案1】:

    给你的一些提示:

    1. 请不要使用正则表达式来解析 HTML。它可以打破宇宙。请参阅此处了解更多信息:RegEx match open tags except XHTML self-contained tags
    2. 相反,您可以使用 HTML Agility Pack,如 this SO answer 中所建议的那样

    【讨论】:

    • 我担心使用 HTML 敏捷包可能会减慢进程
    • 这取决于您的 HTML 文档有多大。正则表达式的性能也不是很好
    猜你喜欢
    • 1970-01-01
    • 2011-03-27
    • 2010-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-04
    • 1970-01-01
    相关资源
    最近更新 更多