【发布时间】:2016-08-22 23:37:46
【问题描述】:
我有 perl 5,版本 22,(在 Cygwin 上,非常新的版本)。使用 \R 似乎不起作用,即使它应该起作用。
我只是用单新行替换双新行:
my $data = read_file($filename);
$data =~ s/\R\R/\R/g;
但是我收到错误“无法识别的转义 \R 在 test.pl 第 7 行通过。”
是不是我做错了什么?
【问题讨论】:
我有 perl 5,版本 22,(在 Cygwin 上,非常新的版本)。使用 \R 似乎不起作用,即使它应该起作用。
我只是用单新行替换双新行:
my $data = read_file($filename);
$data =~ s/\R\R/\R/g;
但是我收到错误“无法识别的转义 \R 在 test.pl 第 7 行通过。”
是不是我做错了什么?
【问题讨论】:
正则表达式模式中的\R 匹配许多不同的换行序列。
\R 在字符串字面量中(如替换表达式[1])是没有意义的。
使用
$data =~ s/(\R)\R+/$1/g;
更好,
$data =~ s/\R\K\R+//g;
记住,
s{...}{...}
与
相同s{...}{ qq{...} }e
【讨论】:
$1 包含匹配的行尾。