使用正则表达式替换字符串中的换行符

时间:2011-07-14 12:21:23

标签: regex perl newline

我正在使用以下正则表达式从字符串中删除换行符:

$description =~ s/\r//;
$description =~ s/\n//;

但之后我的意思是:

$description =~ m/\n/

似乎正则表达式没有替换字符串中的所有换行符,对此有何帮助?

2 个答案:

答案 0 :(得分:9)

如果您尝试删除单个字符,请使用tr而不是s///

$description =~ tr/\r\n//d;

这将删除\r\n中出现的所有内容,无论其在字符串中各自的位置如何。

答案 1 :(得分:4)

您的替换不是全局替换 - 它们仅替换字符串中模式的第一个实例。要进行全局替换,请在最终斜杠后添加g,如下所示:

$description =~ s/\r//g;
$description =~ s/\n//g;

您还可以使用字符集将两个替换合并为一个替换:

$description =~ s/[\n\r]//g;