Perl替换字符串中的\

时间:2013-06-07 02:40:53

标签: perl

我想在字符串中替换第二次出现的反斜杠,这可能很容易。

的字符串

$ra = '\\Test\C$\temp';

输出应该是这样的

"\\Test/C$/temp"

搜索并替换更改字符串

中的所有内容
$ra =~ s/\\/\//g; makes output to "/Test/C$/temp"

任何高度赞赏的见解

3 个答案:

答案 0 :(得分:3)

这可能不是最好的方法,但您可以使用e选项:

$ra =~ s!^(.*?\\)(.*)!my ($e,$f)=($2,$1);$e=~s/\\/\//g;$f.$e!e;

或使用split:

my @v = split /\\+/, $ra;
$ra = (shift @v) . '\\' . join("/", @v);

答案 1 :(得分:2)

“我想用字符串[用斜杠]替换...斜杠”

s,\\,/,g;

“前两次反斜杠仍然存在”

s,(?<!^)(?<!^\\)\\,/,g;

需要两个零宽度负向后视断言,因为后视镜不能具有可变宽度。如果反弹没有先于行的开头或者行的开头然后是反斜杠,它们就会成功。

答案 2 :(得分:1)

字符串文字

 '\\Test\C$\temp';

创建字符串

 \Test\C$\temp

首先,您需要使用

 $ra = '\\\\Test\\C$\\temp';

或者如果你想偷工减料,

 $ra = '\\\Test\C$\temp';

然后你可以简单地做

 $ra =~ s{(?<!^)(?<!^\\)\\}{/}g;

请注意,Windows会考虑

 //Test/C$/temp

完全等同于

 \\Test\C$\temp

所以我不知道为什么你要完成你说你想要完成的事情。