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