我使用正则表达式陷入困境,但也许有人可以帮助我。
我的页面中有一个标签,我需要更改标签内的URL,即。
自:
<link href="/*.html" rel="canonical"/>
要:
<link href="https:/www.domain.com/*.html" rel="canonical"/>
星号(*)=这是对我所有html文件的全局搜索,子目录可能会有所不同。
我试图使用的正则表达式为:href=”/([^"<]*)”
一无所获。很沮丧。
答案 0 :(得分:0)
示例文件:
<link href="/*.html" rel="canonical"/>
<link href="/foobar.html" rel="canonical"/>
<link href="/bar/foobar.html" rel="canonical"/>
<link href="/bar/baz/foobar.tar.gz.html" rel="canonical"/>
命令:
sed -r 's/<link href="\/([^<]+).html" rel=/<link href="https:\/www.domain.com\/\1.html" rel=/' canon.html
结果:
<link href="https:/www.domain.com/*.html" rel="canonical"/>
<link href="https:/www.domain.com/foobar.html" rel="canonical"/>
<link href="https:/www.domain.com/bar/foobar.html" rel="canonical"/>
<link href="https:/www.domain.com/bar/baz/foobar.tar.gz.html" rel="canonical"/>
指挥解构:
sed -r 's
/<link href="\/([^<]+).html" rel=/
([^<]+)
阻止贪婪进入下一个标记<link href="https:\/www.domain.com\/\1.html" rel=/
\1
canon.html
哪些角色需要屏蔽?好吧,对于sed,你需要屏蔽斜杠,因为它们用于分割
command/pattern/replacement/parameters(optional)
最有可能你的正则表达式不需要它们。例如,在Java中它将是
(file as String).replaceAll (pattern, replacement);
或类似的东西。正如评论中指出的那样,\ 1将是1美元。但在那里,你需要掩盖双引号。
在编辑器搜索/替换框中,您通常使用不同的文本字段来分隔元素和减少遮罩。这里不适用的参数由复选框解决(大写/小写忽略等)。