我正在编写一个简单的程序 - 请参阅下面的代码和评论。有谁知道为什么第10行不识别空格字符?当我运行代码时,它会找到::但不会用空格替换它。
1 #!/usr/bin/perl
2
3 # This program replaces :: with a space
4 # but ignores a single :
5
6 $string = 'this::is::a:string';
7
8 print "Current: $string\n";
9
10 $string =~ s/::/\s/g;
11 print "New: $string\n";
答案 0 :(得分:16)
尝试使用s/::/ /g
代替s/::/\s/g
。
\s
实际上是一个表示所有空白字符的字符类,因此只有在正则表达式(第一部分)而不是替换字符串中才有意义。
答案 1 :(得分:3)
使用s/::/ /g
。 \s
仅表示匹配方的空白,替换方为s
。
答案 2 :(得分:3)
替换字符串应该是文字空格,即:
$string =~ s/::/ /g;
答案 3 :(得分:3)
用真实空格替换\s
。
\s
是空白匹配模式的简写。指定替换字符串时不使用它。