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

时间:2011-11-21 00:01:07

标签: regex perl

我正在编写一个简单的程序 - 请参阅下面的代码和评论。有谁知道为什么第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 个答案:

答案 0 :(得分:16)

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

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

答案 1 :(得分:3)

使用s/::/ /g\s仅表示匹配方的空白,替换方为s

答案 2 :(得分:3)

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

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

答案 3 :(得分:3)

用真实空格替换\s

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