使用正则表达式从HTML中的Url中删除查询字符串

时间:2008-11-07 10:44:06

标签: html regex url parsing

给定一个html文档,从文档中的每个url中删除查询字符串的最正确和简洁的正则表达式模式是什么?

3 个答案:

答案 0 :(得分:5)

使用正则表达式无法有效地解析HTML。如果您事先知道页面的格式 - 例如

  • 链接始终采用< a href =“没有不必要的字符转义的网址”>或
  • 所有链接都是绝对的,没有其他以http:exists
  • 开头的非链接字符串

那么你可以侥幸逃脱它,但对于一般的[X] HTML,正则表达式解析器是不合适的。

根据您使用的语言,您需要找到HTML解析器库(例如Python的BeautifulSoup),或者与标准XML解析器结合的HTML整理器,然后扫描文档以获取<一个>元素(也许是其他元素,例如。< img>如果您对这些元素感兴趣?),那么将属性值拆分为'?'。

答案 1 :(得分:2)

Re:Bobince的评论,HTMLAgilityPack是.NET的一个很好的HTML解析器,它处理不正确的标记比其他解析器更宽容。

使用它可以让你找到所有的A标签,然后你可以获得HREF并简单地删除任何内容,包括'?'

答案 2 :(得分:0)

找到这个:

/href="([^\?"]*?)\?[^\"]*"/

替换为:

href="\1"

您可能需要注意它不会删除<link>标记。