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

mmc*_*coo 3 regex perl newline

当我跑:

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

我希望结果如下:

str abc... multiline...
Run Code Online (Sandbox Code Playgroud)

相反,我得到了

str abc... multiline...
123
Run Code Online (Sandbox Code Playgroud)

我哪里错了?

cha*_*aos 7

$x =~ s/\n.*/... multiline.../s
Run Code Online (Sandbox Code Playgroud)

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