我想替换字符串中第二次出现的反斜杠,这可能很容易。
细绳
$ra = '\\Test\C$\temp';
输出应该是这样的
"\\Test/C$/temp"
搜索和替换更改字符串中的所有内容
$ra =~ s/\\/\//g; makes output to "/Test/C$/temp"
任何见解都受到高度赞赏
我想替换字符串中第二次出现的反斜杠,这可能很容易。
细绳
$ra = '\\Test\C$\temp';
输出应该是这样的
"\\Test/C$/temp"
搜索和替换更改字符串中的所有内容
$ra =~ s/\\/\//g; makes output to "/Test/C$/temp"
任何见解都受到高度赞赏
这可能不是最好的方法,但您可以使用 e 选项:
$ra =~ s!^(.*?\\)(.*)!my ($e,$f)=($2,$1);$e=~s/\\/\//g;$f.$e!e;
或使用拆分:
my @v = split /\\+/, $ra;
$ra = (shift @v) . '\\' . join("/", @v);
“我想替换......字符串中的反斜杠[带斜杠]”
s,\\,/,g;
“前两次出现的反斜杠仍然存在”
s,(?<!^)(?<!^\\)\\,/,g;
需要两个零宽度负后向断言,因为后向不能具有可变宽度。如果反斜杠之前没有行首或行首然后是反斜杠,则它们成功。
字符串字面量
'\\Test\C$\temp';
创建字符串
\Test\C$\temp
所以首先,你需要使用
$ra = '\\\\Test\\C$\\temp';
或者如果你想偷工减料,
$ra = '\\\Test\C$\temp';
然后你可以简单地做
$ra =~ s{(?<!^)(?<!^\\)\\}{/}g;
请注意,Windows 认为
//Test/C$/temp
完全等价于
\\Test\C$\temp
所以我不知道你为什么要努力完成你说你想要完成的事情。