逐步修剪空白

  • 本文关键字:空白 修剪 regex perl
  • 更新时间 :
  • 英文 :


我是perl和使用正则表达式的新手。我需要从字符串中删除空格。

我找到了一个例子,但它对我来说非常不透明。这是对正在发生的事情的准确描述吗?

sub trim($)
{
  my $string = shift;
  $string =~ s/^s+//;
  # =~         : regex on variable string
  # s/         : replace match with value
  # ^s+       : one or more white space characters at beginning
  # //         : no characters
  $string =~ s/s+$//;
  #  =~        : regex on variable $string
  # s/         : replace match with value
  # s+$       : one or more white space characters until end of line
  # //         : no characters
  return $string;
}

是的。

其实没什么好说的。

是的,正如 sidyll 所回答的那样。您的所有评论都是准确的。由于这些是您要求的基础知识,因此我想补充一点。

您可以在一个表达式中同时执行这两项操作,s/^s+|s+$//g(有轻微的效率考虑)。请注意,现在您需要/g("全局")修饰符,以便找到所有s+。否则,引擎在找到^s+(如果有)后停止,并且您留下尾随空间(如果有)。

为了提高可读性,您可以使用/x修饰符在正则表达式中使用空格。在这种情况下,它并不多,但对于更复杂的方法,它可以有很大帮助。

$string =~ s% ^s+ | s+$ %%gx;

您可以使用不同的分隔符 - 只要您不在正则表达式中使用它。我使用上面的%来避免编辑器将所有内容都涂成红色(我发现%实际上不是很好读,但我需要在里面|)。这有时非常有用,例如当您的正则表达式有很多/时。 然后,您可以使用不同的分隔符,这样就不必转义它们。


完整的资源由 这套衣服是黑色不是在评论中。

我看到人们经常称赞这一点:正则表达式演示,您可以在其中键入正则表达式并查看它是如何工作的。

最新更新