正则表达式相当于chomp

use*_*744 5 regex perl

我已经看到某处而不是在perl中使用chomp我们可以使用一些正则表达式来实现相同的任务.任何人都可以告诉正则表达式将在perl中遇到chomp

提前致谢

TLP*_*TLP 11

什么chomp$/从其参数字符串的末尾删除值(或者$_如果没有参数).所以等效的正则表达式将是:

s#\Q$/\E\z##;
Run Code Online (Sandbox Code Playgroud)

请注意使用其他分隔符s///以避免$/变量出现问题.

但是,使用这样的正则表达式没有任何好处,而恰恰相反.在我看来,这是一个纯粹的学术问题.

  • 不,`s#\ Q $ /\z ##`(迂腐地说,用`定义$/&&!ref $ /`,加上`$/eq''`的特殊情况) (3认同)
  • @ user2163744这些都不是真的.不,`chomp`从字符串末尾删除`$ /`,就像我在答案中所说的那样.是的,我知道来自Windows的文件的eol问题,但这不是不使用`chomp`的理由.不,`s/\n $ //`不会修复eol问题,因为它不会删除`\ r``. (2认同)

ike*_*ami 6

至少有995次超出1000(除了明显的选项卡分隔数据)你想要的

s/\s+\z//;
Run Code Online (Sandbox Code Playgroud)

代替

chomp;
Run Code Online (Sandbox Code Playgroud)

它处理尾随空格(不应该是重要的),Windows行结尾和unix行结尾.

  • 如果数据以制表符分隔并且尾随空字段,那么尾随空格是合法重要的.此方法将删除这些字段以及任何记录分隔符.通常`s/[\ r \n] +\z //`更安全. (2认同)