我是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;
您可以使用不同的分隔符 - 只要您不在正则表达式中使用它。我使用上面的%
来避免编辑器将所有内容都涂成红色(我发现%
实际上不是很好读,但我需要在里面|
)。这有时非常有用,例如当您的正则表达式有很多/
时。 然后,您可以使用不同的分隔符,这样就不必转义它们。
完整的资源由 这套衣服是黑色不是在评论中。
我看到人们经常称赞这一点:正则表达式演示,您可以在其中键入正则表达式并查看它是如何工作的。