首页 > 解决方案 > Perl RegEx 删除字符串中的双字符而不是双数字

问题描述

我正在使用 Perl RegExp 尝试删除双字符和双数字。但是,我只想删除双字符并在同一字符串中保留双数字。

尽管有几个示例显示删除双字符,但没有示例显示删除双字符并在字符串中保留双数字。

我的代码:

#! /usr/bin/perl
use v5.10.0;
use warnings;

my $double = "AAPPLES112233";
$double =~ s/(.)\1/$1/gi;
say $double;

我的代码输出 APLES123。然而,目标是输出 APLES112233,消除双字符,同时将双数字保持在同一字符串中。

标签: regexperl

解决方案


而不是 using .,它几乎匹配任何字符(包括字母和数字),[a-z]而是使用,它将仅匹配字母字符:

$double =~ s/([a-z])\1/$1/gi;

推荐阅读