我正在写一个简单的程序-请参阅下面我的代码和注释。有人知道为什么第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/::/ /g
。s
仅表示匹配侧的空白,在替换侧变为s
。
将s
替换为实际空格
s
是空白匹配模式的简写。在指定替换字符串时不使用。
替换字符串应该是一个文字空格,即:
$string =~ s/::/ /g;