2015-01-02 42 views

回答

4

首先使用情況下的* nix單引號,因爲這不是你想要的東西:

echo "(a b c)(a b c)" | perl -MO=Deparse -ne "/(a) b/g; print $1" 
LINE: while (defined($_ = <ARGV>)) { 
    /(a) b/g; 
    print $_; 
} 

,然後使用標量上下文與/g遍歷所有匹配

echo "(a b c)(a b c)" | perl -ne 'print $1 while /(a) b/g' 

,或者使用列表上下文所以正則表達式一次返回所有的匹配,

echo "(a b c)(a b c)" | perl -ne 'print /(a) b/g' 
+0

這使得現在很有意義,謝謝! 特別感謝教我的Deparse技巧! (由於聲譽不好,我還不能投票) – vervenumen