【问题标题】:Can somebody explain the tr /d modifier in perl? [duplicate]有人可以解释 perl 中的 tr /d 修饰符吗? [复制]
【发布时间】:2015-11-16 15:14:24
【问题描述】:

我在 Perl 教程中找到了这个示例,但无法理解输出。教程说:

/d 修饰符删除与 SEARCHLIST 匹配但在 REPLACEMENTLIST 中没有对应条目的字符。

但我不知道在示例中这是如何实现的。

有人能解释一下输出是如何产生的吗?

脚本:

$string = 'the cat sat on the mat.';
$string =~ tr/a-z/b/d;
print "[$string]\n";

输出:

[ b b   b.]

(方括号标记字符串的开始和结束,仅此而已。)

【问题讨论】:

  • 那是transliteration,与正则表达式无关;)
  • 多么奇怪 - 重复的问题使用完全相同的示例文本。

标签: perl tr


【解决方案1】:

由于替换列表中只有一个字符 (b),因此只有搜索列表中的第一个字符 (a) 将替换为 b。搜索列表中的其余字符 (b-z) 将被删除。

因此,将as 替换为bs 和b-z 没有任何内容的字母,

mat 上的 cat sat。

变成 b b   b.(句子中只有三个as,空格和点被保留,因为它们不是搜索列表的一部分)。

【讨论】:

  • 很清楚。非常感谢。顺便说一句,有人知道为什么我的问题从 SO 得到 -1 吗?是不是因为“正则表达式”标签不合适? (如果是的话,很抱歉。)
  • @leo,-1 来自一个人,而不是 SO 本身。要么他们不喜欢被regex 标签引诱,要么他们不喜欢您的初始版本的格式,或者他们认为您没有付出足够的努力,请在询问之前自己了解这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-05
  • 1970-01-01
  • 2012-08-16
  • 1970-01-01
  • 1970-01-01
  • 2017-10-03
  • 1970-01-01
相关资源
最近更新 更多