【问题标题】:Unrecognized escape \R passed through at test.pl line 7无法识别的转义 \R 在 test.pl 第 7 行通过
【发布时间】: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 行通过。”

是不是我做错了什么?

【问题讨论】:

    标签: regex perl


    【解决方案1】:

    正则表达式模式中的\R 匹配许多不同的换行序列。

    \R 在字符串字面量中(如替换表达式[1])是没有意义的。

    使用

    $data =~ s/(\R)\R+/$1/g;
    

    更好,

    $data =~ s/\R\K\R+//g;
    

    1. 记住,

      s{...}{...}
      

      与

      相同
      s{...}{ qq{...} }e
      

    【讨论】:

    • 在第一个 sn-p 中,$1 包含匹配的行尾。
    猜你喜欢
    • 2014-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-05
    • 1970-01-01
    • 2012-12-10
    • 2021-08-21
    • 2015-08-27
    相关资源
    最近更新 更多