Perl 字符串 - 替换多个字符

Perl String - Substitute Multiple Characters

我不知道如何从 /usr/lib 更改为 /synopsys/vcs/lib/ $mypath=~s/.......; 有办法吗?

$mypath = "/usr/lib";
$mypath =~ s/usr/synopsys/lib//g;

print "$mypath\n";```

正则表达式替换的工作方式类似于 s/match this / replace with this / 在 perl 中,您需要使用反斜杠转义正斜杠 / \ 然后使用括号将 usr\/ 捕获到 </code> 所以对于你的例子:</p> <pre><code>$mypath =~ s/(usr\/)/synopsys\//;

/ 是一个特殊字符,因为它被用作分隔符。如果因此需要转义。

$mypath =~ s/\/usr\/lib/\/synopsys\/vcs\/lib\//;

但是,使用替代分隔符意味着我们不需要所有这些转义符。

$mypath =~ s{/usr/lib}{/synopsys/vcs/lib/};

它替换了字符串 中 /usr/lib 的第一个实例。如果你想在 /usr/lib 是整个字符串时替换它,我会使用

$mypath = "/synopsys/vcs/lib/" if $mypath eq "/usr/lib";