用一个链接替换包含公共文本字符串的各种链接

时间:2014-04-15 20:16:25

标签: html regex

我刚刚发现了RegEx并使用Dreamweaver尝试更新内部网上的数百个页面。这些路径有一个共同的文件夹供我搜索 - 例如“hawww”

<a href="http://home/hawww/test1.asp">line1</a>
<a href="http://home/hawww/sample.html">page3</a>
<a href="hawww.html">line3</a>
<a href="www.hawww/test2.html">line4</a>

我想将所有这些链接更改为:

<a href="sample.html">

我可以在链接以相同文本开头的地方更改它们,但不能在不合适的地方更改它们 - 如果这有意义的话。非常感谢任何帮助。

由于

乔纳森

1 个答案:

答案 0 :(得分:0)

答案

我做了一个快速而肮脏的测试。您可以通过vim或您使用的任何RegEx工具运行这些。从本质上讲,搜索正则表达式应该是这样的:

/href=\".*?hawww.*?"/g

说明

.*?表示搜索任何内容,但不要使用贪婪匹配。最后的g是全局匹配的可选标志。

测试用例

这是我使用的测试JS脚本。

var test = ['<a href="http://home/hawww/test1.asp">line1</a>',
  '<a href="http://home/hawww/sample.html">page3</a>',
  '<a href="hawww.html">line3</a>',
  '<a href="www.hawww/test2.html">line4</a>'];

var fixed = test.map(function(html) {
    return html.replace(/href=\".*?hawww.*?"/, 'href="simple.html"');    
});

console.log(fixed);

质量变化

您可以使用sed之类的工具对文件执行所有更改。但是,我建议在提交更改之前备份并进行一些测试。可能存在一些奇怪的用例,其中hawww用于链接,并且您希望将其保留在那里。

sed -i 's/href=\".*?hawww.*?"/href="simple.html"/g' /home/user/*.html