【问题标题】:Substitution operator in PerlPerl 中的替换运算符
【发布时间】:2015-01-05 06:52:58
【问题描述】:

我是 perl 新手。我有以下替换表达式:

$tmp =~ s:/x/y/z::;

我搜索了很多,但找不到类似的表达方式。 什么意思?

【问题讨论】:

  • s|/x/y/z||s!/x/y/z!! 将是更常见的变体。
  • 实际上,使用| 非常少见,因为模式中经常需要|s{}{} 可能是仅次于s/// 的第二常见的。

标签: perl string-substitution


【解决方案1】:

您可以使用任何非空白字符作为分隔符;在这里,分隔符不是最常见的 / (s/foo/bar/),而是 : (s:foo:bar:),因为您要替换的有斜杠字符,如果您使用斜杠分隔符,您会必须摆脱它们(s/\/x\/y\/z//),许多人认为它们很丑陋。

所以您的表达式只是从$tmp 中删除第一个/x/y/z

【讨论】:

  • @F.Hauri 谢谢。我假设 OP 询问的是分隔符的更改,而不是=~ 的一般用途。如果我错了,我会补充更多。
【解决方案2】:

这意味着:将/x/y/z 替换为空。

例如:如果你有一个类似/a/b/x/y/z 的字符串,结果将是/a/b

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-08
    相关资源
    最近更新 更多