Regex 为什么tr/a-z/b/d在perl中取代了a?
为什么tr/a-z/b/d替换perl中的字符a?它不是要删除从a到z的所有字符吗Regex 为什么tr/a-z/b/d在perl中取代了a?,regex,perl,Regex,Perl,为什么tr/a-z/b/d替换perl中的字符a?它不是要删除从a到z的所有字符吗 搜索列表是a-z。替换列表为b。给出了选项/d。这意味着将a替换为b,并删除没有替换项的所有其他匹配项。文档。搜索列表为a-z。替换列表为b。给出了选项/d。这意味着将a替换为b,并删除没有替换项的所有其他匹配项。文档。第二个范围比第一个范围短。因此a被b替换,b-z被空字符串替换,因为末尾有额外的d标志。第二个范围比第一个范围短。因此,a被b替换,b-z被空字符串替换,因为末尾有额外的d标志。来自: 如果使用/
搜索列表是a-z。替换列表为b。给出了选项/d。这意味着将a替换为b,并删除没有替换项的所有其他匹配项。文档。搜索列表为a-z。替换列表为b。给出了选项/d。这意味着将a替换为b,并删除没有替换项的所有其他匹配项。文档。第二个范围比第一个范围短。因此a被b替换,b-z被空字符串替换,因为末尾有额外的d标志。第二个范围比第一个范围短。因此,a被b替换,b-z被空字符串替换,因为末尾有额外的d标志。来自: 如果使用/d修饰符,则REPLACEMENTLIST始终按照指定的方式进行解释。否则,如果REPLACEMENTLIST比SEARCHLIST短,则复制最后一个字符,直到它足够长为止 由于使用了/d修改器,因此不会扩展REPLACEMENTLIST。所以a被替换为b,剩下的由a-z匹配的字母被删除,因为在替换列表中没有可以替换它们的内容 如果不使用/d修饰符,您将获得预期的行为。这相当于:
tr/a-z/bbbbbbbbbbbbbbbbbbbbbbbbbb/
由于复制。来自:
如果使用/d修饰符,则REPLACEMENTLIST始终按照指定的方式进行解释。否则,如果REPLACEMENTLIST比SEARCHLIST短,则复制最后一个字符,直到它足够长为止
由于使用了/d修改器,因此不会扩展REPLACEMENTLIST。所以a被替换为b,剩下的由a-z匹配的字母被删除,因为在替换列表中没有可以替换它们的内容
如果不使用/d修饰符,您将获得预期的行为。这相当于:
tr/a-z/bbbbbbbbbbbbbbbbbbbbbbbbbb/
因为复制。你期望什么?为什么?你期待什么?为什么?当使用/d时,它会将搜索列表中的第一个字符替换为替换列表中的第一个字符,也就是说替换列表中只有一个字符?所以当使用/d时,它用替换列表中的第一个字符替换搜索列表中的第一个字符,即替换列表中只有一个字符吗?等等,我想我明白了。您是说/d修改器用于将搜索列表替换为替换列表吗?否。/d修改器意味着删除搜索列表中任何在替换列表中没有相应字符的内容。它通常在替换列表为空时使用,意味着搜索列表中的所有内容都应该删除。等等,我想我明白了。您是说/d修改器用于将搜索列表替换为替换列表吗?否。/d修改器意味着删除搜索列表中任何在替换列表中没有相应字符的内容。它通常在替换列表为空时使用,意味着搜索列表中的所有内容都应该删除。