正则表达式中的空格字符未被识别。

5

我正在编写一个简单的程序 - 请参见下面带有注释的代码。有人知道为什么第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";
4个回答

16

尝试使用s/::/ /g替代s/::/\s/g

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


3
使用s/::/ /g\s只表示匹配一侧的空格,替换一侧变为s

3
替换字符串应为字面空格,即:
$string =~ s/::/ /g;

3

\s替换为实际空格。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接