我面临的问题是链接错误... 不同文件中有几百个不良链接。
所以我写bash来替换链接
<a href="../../../external.html?link=http://www.twitter.com">
{
{1}}
<a href="../../external.html?link=http://www.facebook.com/pages/somepage/">
直接链接
<a href="../external.html?link=http://www.tumblr.com/">
我知道我们有模式../重复一次或多次。还应该删除external.html?链接。
如何推荐这样做? awk,sed,也许是python? 我需要正则表达式吗?
感谢您的意见......
答案 0 :(得分:1)
这个可能是正则表达式是正确解决方案的地方。您只搜索属性中的文本,并且内容是常规的,符合模式。
以下python正则表达式将为您找到这些链接:
r'href="((?:\.\./)+external\.html\?link=)([^"]+)"'
我们寻找的模式是href=""
块文本中的内容,其中'某些'以../
的一个或多个实例开头,后跟external.html?link=
,然后是任何不包含"
引用的文本。
等号后的匹配文本在第2组中分组以便于检索,第1组包含../../external.html?link=
部分。
如果您要做的只是完全删除../../external.html?link=
部分(因此链接直接指向端点而不是通过重定向页面),请不要使用第一个组并执行简单的{{1}你的HTML文件:
.sub()
请注意,这也可以匹配任何正文(因此HTML标记外),这不是支持HTML的解决方案。有可能没有这样的正文。但如果有,你需要一个完整的HTML解析器,如BeautifulSoup或lxml。
答案 1 :(得分:0)
使用像BeautifulSoup或lxml.html这样的HTML解析器。