【发布时间】:2015-01-05 06:52:58
【问题描述】:
我是 perl 新手。我有以下替换表达式:
$tmp =~ s:/x/y/z::;
我搜索了很多,但找不到类似的表达方式。 什么意思?
【问题讨论】:
-
s|/x/y/z||或s!/x/y/z!!将是更常见的变体。 -
实际上,使用
|非常少见,因为模式中经常需要|。s{}{}可能是仅次于s///的第二常见的。
我是 perl 新手。我有以下替换表达式:
$tmp =~ s:/x/y/z::;
我搜索了很多,但找不到类似的表达方式。 什么意思?
【问题讨论】:
s|/x/y/z|| 或 s!/x/y/z!! 将是更常见的变体。
| 非常少见,因为模式中经常需要|。 s{}{} 可能是仅次于s/// 的第二常见的。
您可以使用任何非空白字符作为分隔符;在这里,分隔符不是最常见的 / (s/foo/bar/),而是 : (s:foo:bar:),因为您要替换的有斜杠字符,如果您使用斜杠分隔符,您会必须摆脱它们(s/\/x\/y\/z//),许多人认为它们很丑陋。
所以您的表达式只是从$tmp 中删除第一个/x/y/z。
【讨论】:
=~ 的一般用途。如果我错了,我会补充更多。
这意味着:将/x/y/z 替换为空。
例如:如果你有一个类似/a/b/x/y/z 的字符串,结果将是/a/b
【讨论】: