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