首页 > 解决方案 > 如何在 Perl 中替换连续且相同的字符?

问题描述

我有一个 XXXXYYYYZZZYYZZZYYYY需要转换为 的字符串XXXXAAAYZZZAYZZZAAAY

$s =~ s/Y{2}+/AY/g;

这有 2 个问题,{2}+会得到 YYYY 到 AYAY;并且 AY 的长度与YYYY(预期的AAAY)不同

如何在 perl 中完成这项工作?

标签: regexstringperlreplace

解决方案


使用“前瞻”:

$s =~ s/Y(?=Y+)/A/g;

(?=Y+)表示“后跟一个或多个Y字符”,因此任何Y后跟另一个Y字符的字符都将替换为A.

更多信息来自perlretut


推荐阅读