如何使用Perl正则表达式删除换行符?

时间:2009-04-27 20:46:03

标签: regex perl newline

我跑的时候:

perl -e '$x="abc\nxyz\n123"; $x =~ s/\n.*/... multiline.../; printf("str %s\n", $x);'

我希望结果是:

str abc... multiline...

而不是

str abc... multiline...
123

我哪里错了?

2 个答案:

答案 0 :(得分:7)

$x =~ s/\n.*/... multiline.../s

/s修饰符告诉Perl将匹配的字符串视为单行,这会导致.匹配换行符。通常它没有,导致你观察到的行为。

答案 1 :(得分:2)

你需要在你的正则表达式上使用's'修饰符,这样点'''。将匹配任何后续换行。所以这个:

$x =~ s/\n.*/... multiline.../;

成为这个:

$x =~ s/\n.*/... multiline.../s;
相关问题