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";
我不知道如何从 /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";