【发布时间】:2008-11-07 10:44:06
【问题描述】:
给定一个 html 文档,从文档中的每个 url 中删除查询字符串的最正确和简洁的正则表达式模式是什么?
【问题讨论】:
给定一个 html 文档,从文档中的每个 url 中删除查询字符串的最正确和简洁的正则表达式模式是什么?
【问题讨论】:
您无法使用正则表达式有效地解析 HTML。如果你事先知道页面的格式 — eg.
那么你可以摆脱它,但对于一般的 [X]HTML 正则表达式解析器是不合适的。
根据您使用的语言,您需要找到一个 HTML 解析器库(例如 Python 的 BeautifulSoup),或者一个与标准 XML 解析器相结合的 HTML 整理器,然后扫描文档中的 元素(也许还有其他人,例如 如果您对这些感兴趣?),然后将属性值拆分为 '?'。
【讨论】:
Re: Bobince 的评论,HTMLAgilityPack 是一个很好的 .NET html 解析器,它比其他解析器更宽容地处理不正确的标记。
使用它可以让您找到所有 A 标记,然后您可以获取 HREF 并简单地删除任何内容,包括 '?'
【讨论】:
找到这个:
/href="([^\?"]*?)\?[^\"]*"/
替换为:
href="\1"
您可能需要注意它不会去除<link> 标签。
【讨论】: