我是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;
}
答案 0 :(得分:5)
是的。
实际上没什么可说的。
答案 1 :(得分:1)
是的,正如sidyll所回答的那样。您的所有评论都是准确的。由于这些是你要问的基础知识,我想补充一点。
您可以在一个表达式s/^\s+|\s+$//g
中执行这两个操作(有一些效率考虑因素)。
请注意,现在您需要/g
(" global")修饰符,以便找到所有 \s+
。否则,引擎在找到^\s+
(如果有的话)后停止,并留下尾随空格(如果有的话)。
为了便于阅读,您可以使用/x
修饰符在正则表达式中使用空格。在这种情况下它不是很多,但是对于更复杂的它可以帮助很多。
$string =~ s% ^\s+ | \s+$ %%gx;
您可以使用不同的分隔符 - 只要您不在正则表达式中使用它。我使用上面的%
来避免编辑器将所有内容着色为红色(我发现%
实际上并不是非常易读,但我需要内部|
。这有时非常有用,例如当你的正则表达式有很多/
时。然后你可以使用不同的分隔符,这样你就不必逃避它们。
完整资源由评论中的ThisSuitIsBlackNot提供。
我看到人们对此赞不绝口:regex Demo,您可以输入正则表达式,看看它是如何工作的。