【问题标题】:How to insert a line break in perl after the first + that appears in text如何在文本中出现的第一个 + 之后在 perl 中插入换行符
【发布时间】:2013-01-15 13:39:00
【问题描述】:

例如

*aabc aacb  aavg +gf avb avb abf

应该是

*aabc aacb  aavg 
+gf avb avb abf

谢谢

【问题讨论】:

  • 第一个+出现之前不是更“之前”吗?
  • "in text" 是指“文件中的每一行”还是“文件中”?

标签: regex perl search replace


【解决方案1】:
> echo "abcd +gkj +bcd" | perl -pe 's/\+/\n\+/'
abcd 
+gkj +bcd

【讨论】:

    【解决方案2】:
    my $str = "*aabc aacb  aavg +gf avb avb abf";
    $str =~ s/\+/\n\+/;
    print $str;
    

    【讨论】:

      【解决方案3】:

      使用替换:

      my $text =  '*aabc aacb  aavg +gf avb avb abf';
      $text    =~ s/\+/\n+/;
      print $text;
      

      + 必须加反斜杠才能失去其特殊含义,\n 是换行符。

      【讨论】:

      • 或者,使用前瞻断言:s{(?=\+)}{\n};
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-31
      • 2013-06-26
      • 2015-01-21
      • 1970-01-01
      • 2021-08-31
      • 2011-04-17
      • 1970-01-01
      相关资源
      最近更新 更多