3
當我運行:如何使用Perl正則表達式去除換行符?
perl -e '$x="abc\nxyz\n123"; $x =~ s/\n.*/... multiline.../; printf("str %s\n", $x);'
我預計結果爲:
str abc... multiline...
,而不是我得到
str abc... multiline...
123
我要去哪裏錯了?
當我運行:如何使用Perl正則表達式去除換行符?
perl -e '$x="abc\nxyz\n123"; $x =~ s/\n.*/... multiline.../; printf("str %s\n", $x);'
我預計結果爲:
str abc... multiline...
,而不是我得到
str abc... multiline...
123
我要去哪裏錯了?
$x =~ s/\n.*/... multiline.../s
/s
改性劑告訴Perl對待匹配的字符串作爲單線,這會導致.
匹配換行。通常情況下,這不會導致你觀察到的行爲。
您需要在您的正則表達式中使用's'修飾符,以便點'。'將匹配任何後續換行。所以這個:
$x =~ s/\n.*/... multiline.../;
變爲這樣:
$x =~ s/\n.*/... multiline.../s;
據我所知,Perl不使用PCRE。 PCRE是一個模仿perl正則表達式語法的庫。 – obecalp 2009-04-27 21:32:27