【问题标题】:Replacing various links that contain common text string with one single link用一个链接替换包含通用文本字符串的各种链接
【发布时间】:2014-05-30 09:25:57
【问题描述】:

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

<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">

我可以在链接以相同文本开头的地方更改它们,但不能在没有的地方更改它们 - 如果这有意义的话。将不胜感激。

谢谢

乔纳森

【问题讨论】:

标签: html regex


【解决方案1】:

回答

我做了一个快速而肮脏的测试。您可以通过 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

【讨论】:

  • 我在 Dreamweavers Find and Replace 中尝试过 /href=\".*?hawww.*?"/g,但没有成功...我尝试过的链接是 portal/portal/… 和会议设施和旅行服务
  • 嗯.. 我对 Dreamweaver 的了解还不够。我知道每个应用程序都负责实现自己的正则表达式引擎。尝试转义搜索:/href=\\\".*?hawww.*?/g。有时您不需要g 选项,并且有一个显示全局的复选框。
猜你喜欢
  • 1970-01-01
  • 2015-06-23
  • 2020-06-16
  • 2018-12-06
  • 1970-01-01
  • 1970-01-01
  • 2015-09-10
  • 2016-12-04
相关资源
最近更新 更多