【问题标题】:Perl substitute for white space substitutes at newline alsoPerl 也可以替换换行符处的空格替换
【发布时间】:2014-02-28 07:37:55
【问题描述】:

我有一个文本文件,其内容如下:

a b
c

我使用下面的 Perl 代码在输入行中出现空格字符的地方替换下划线 '-' 字符:

while (<>) {
   $_ =~ s/\s/_/;
   print $_;
}

我得到这样的输出:

a_b
c_

所以我的问题是,为什么 Perl 也用下划线代替换行符 '\n' 字符,这在包含 'c' 的输入行中很明显? 当我在代码中使用 chomp 时,它按预期工作。

【问题讨论】:

    标签: regex perl


    【解决方案1】:

    \s 匹配所有空白字符[ \t\r\n\f],因此如果您想替换纯空格,请使用空格

    $_ =~ s/ /_/g;
    # or just
    s/ /_/g;
    

    翻译也可以用于这种简单的替换,例如。 tr/ /_/;

    【讨论】:

    • 此外,原始发帖人只更改了第一个匹配项:如果他想更改该行中的所有匹配项,他可能希望在末尾添加“g”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-05
    • 1970-01-01
    • 2018-02-18
    • 2011-07-10
    • 2011-08-25
    • 1970-01-01
    • 2013-06-19
    相关资源
    最近更新 更多