无法识别正则表达式中的空格字符



我正在写一个简单的程序-请参阅下面我的代码和注释。有人知道为什么第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: $stringn";
9 
10 $string =~ s/::/s/g;
11 print "New: $stringn";

s/::/ /g代替s/::/s/g

s实际上是一个字符类,表示所有空白字符,因此只有在正则表达式(第一部分)中而不是在替换字符串中才有意义。

使用s/::/ /gs仅表示匹配侧的空白,在替换侧变为s

s替换为实际空格

s是空白匹配模式的简写。在指定替换字符串时不使用。

替换字符串应该是一个文字空格,即:

$string =~ s/::/ /g;

最新更新