2011-11-21 79 views
3

我正在寫一個簡單的程序 - 請參閱下面的代碼和評論。有誰知道爲什麼空格字符在第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"; 

回答

15

嘗試s/::/ /g而不是s/::/\s/g

\s實際上是代表所有空白字符的字符類,所以它纔有意義將它在正則表達式(第一部分),而不是在替換字符串。

+0

謝謝,現在的作品。 – kurotsuki

3

使用s/::/ /g\s僅表示匹配側上的空白,在替換側上它變爲s

3

替換字符串應該是文字的空間,即:

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

與現實空間更換\s

\s是空白匹配模式的縮寫。指定替換字符串時不使用它。

相關問題