如何在Perl中用"//"替换"\"?

fix*_*xer 1 perl substitution

我想替换,Windows目录链接中出现的"\"链接到"/".我尝试过使用s//\////g,但它似乎没有成功.

Que*_*tin 12

s[\\][//]g
Run Code Online (Sandbox Code Playgroud)
  • \需要在正则表达式中进行转义
  • / 才不是
  • 在表达式本身使用/时,避免使用/来分隔正则表达式部分(它使事情更具可读性!)

...但你应该使用像Path :: Class这样的东西.

  • \是双引号字符串中的转义字符.因此``C:\ Documents``试图将`\ D`解释为换行符的特殊内容,如`\n`.但是没有`\ D`所以它只是以'D`出现.如果你打开警告,Perl会告诉你"无法识别的逃脱".使用不会逃避(几乎)任何事情的单引号.还可以通过简单的打印声明确保您的输入符合您的想法.PS我推荐使用Path :: Class,更加完整和可靠. (4认同)

phi*_*ant 5

首先,使用不同的分隔符\会使正则表达式更具可读性.

然后你必须替换\with \\,否则它将用于转义下面的字符(/你正在使用的正则表达式中的a ).

$link =~ s|\\|//|g;
Run Code Online (Sandbox Code Playgroud)