Regex 查找并用斜杠字符替换文本

Regex 查找并用斜杠字符替换文本,regex,string,perl,replace,slash,Regex,String,Perl,Replace,Slash,因此,我查看了Stackoverflow,了解到查找和替换文本的工作原理如下: perl -pi -w -e 's/www.example.com/www.pressbin.com/g;' *.html 但是,如果要查找和替换的文本是带有斜杠的文件路径,该怎么办?那我怎么做呢 perl -pi -w -e 's/path/to/file/new/path/to/file/g;' *.html perl-pi-w-e's/path\/to\/file/new\/path\/to\/file/g

因此,我查看了Stackoverflow,了解到查找和替换文本的工作原理如下:

perl -pi -w -e 's/www.example.com/www.pressbin.com/g;' *.html
但是,如果要查找和替换的文本是带有斜杠的文件路径,该怎么办?那我怎么做呢

perl -pi -w -e 's/path/to/file/new/path/to/file/g;' *.html

perl-pi-w-e's/path\/to\/file/new\/path\/to\/file/g;'*。html

对于perl正则表达式,您可以使用除空格以外的任何字符作为正则表达式分隔符,但

  • \w
    中的字符(因此
    s xfooxbarx
    s/foo/bar/
    相同)和
  • 问号
    (隐式激活“仅匹配一次”行为,已弃用)和
  • 单引号
    “…”
    (变量插值的轮次)
应该避免。我更喜欢花括号:

perl -pi -w -e 's{path/to/file}{new/path/to/file}g;' *.html
分隔字符不能出现在相应的字符串中,除非它们是平衡大括号或正确转义的字符串。所以你也可以说

但这真的很难看

当使用大括号/括号等时,正则表达式和替换项之间可能会有空格,这样就可以生成漂亮的代码,比如

$string =~ s {foo}
             {bar}g;
在此上下文中,另一个有趣的正则表达式选项是
quotemeta
函数。如果搜索表达式包含许多通常会被解释为具有特殊含义的字符,我们可以将该字符串括在
\Q..\E
中。所以

m{\Qx*+\E}

匹配精确的字符串
x*+
,即使包含诸如
*
、“+”或
|
等字符。

您可以使用“/”以外的其他字符来指定模式。例如:

perl -pi -w -e 's,path/to/file,new/path/to/file,g;' *.html

这与ssh有什么关系?
perl -pi -w -e 's,path/to/file,new/path/to/file,g;' *.html