2011-08-22 60 views
1
$string = 'a=1;b=2'; 
use Data::Dumper; 
@array = split("; ?", $string); 
print Dumper(\@array); 

輸出:這裏如何拆分工作?

$VAR1 = [ 
      'a=1', 
      'b=2' 
     ]; 

任何人都知道它是如何工作"; ?"這裏不是正則表達式,但工程很喜歡正則表達式,所以我不明白?

回答

3

我認爲它的意思是「分號後跟可選空間(只有一個或零)」。

這不是正則表達式,但工作得很像正​​則表達式,所以我不明白。

要分割的模式參數始終被視爲正則表達式(儘管如此,最好不要使用字符串)。唯一的例外是「單個空間」,意思是「分割空白」

+0

但它不是正則表達式,它只是字符串。 – asker

+0

你的意思是''''和'/ \ s + /'是一樣的嗎? – asker

+1

是的,差不多:http://perldoc.perl.org/functions/split.html。 「//s + /上的分割就像是分割(''),除了任何前導空白都會產生空的第一個字段。」 – Thilo

0

分號(the;)後跟一個可選的(?)空格(the)。

1

split的第一個參數是正則表達式。所以我寧願寫split /; ?/, $string;。 當你爲第一個參數使用一個字符串時,它只是意味着正則表達式可以改變,並且每次運行分割時都必須重新編譯。詳情請參閱perldoc -f split

正則表達式可以被讀取; 字符「;」可選地接着是空間。有關詳細信息,請參閱perlretut和perlreref。

+1

我會寫它'/; \ h */x'自己。也許。 – tchrist

+0

可選擇遵循,而不是最終跟隨。 –

+0

我的不好。我是法國人,我會用法語說「éventuellement」,因此我的錯誤。 – 2011-08-22 04:06:19