从字符串中连续减去多个大写字母

Subtract a number of capital letters in a row from a string

我有一个可以包含字母 and/or 数字的字符串,我想确定它是否连续有 10 个大写字母,如果存在则减去它们:

示例:

my $string = "MyString-MetadataDZEDDMWKQMsomeothertext";

我要识别这个字符串包含10个大写字母一个接一个(DZEDDMWKQM)并减去它们

my $final_string = "MyString-Metadatasomeothertext"

我只设法减去固定数量的字符,但这对我需要的东西没有帮助。

你想要 regular expression substitution.

my $string = 'fooABCDEFGHIJbar';
$string =~ s/[A-Z]{10}//;

print $string;

正则表达式模式包含两部分:

  • [A-Z]是包含所有大写字母的字符组,从AZ
  • {10}是一个量词,意思是把前面的事情恰好重复10次

您可以在 perlre. The regex tag wiki 中了解有关 Perl 正则表达式的更多信息。