我想在字符串中替换第二次出现的反斜杠,这可能很容易。
的字符串
$ra = '\\Test\C$\temp';
输出应该是这样的
"\\Test/C$/temp"
搜索并替换更改字符串
中的所有内容$ra =~ s/\\/\//g; makes output to "/Test/C$/temp"
任何高度赞赏的见解
答案 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
所以我不知道为什么你要完成你说你想要完成的事情。