如何从perl中的字符串中删除最后n个数字字符

Pra*_*esh 5 regex perl character

我有一种情况,我需要删除一个n字符后的最后一个数字/字符.

例如:

/iwmout/sourcelayer/iwm_service/iwm_ear_layer/pomoeron.xml@@/main/lsr_int_vnl46a/61
Run Code Online (Sandbox Code Playgroud)

在最后一次之后/,我需要从行中删除数字61,以便输出,

/iwmout/sourcelayer/iwm_service/iwm_ear_layer/pomoeron.xml@@/main/lsr_int_vnl46a/
Run Code Online (Sandbox Code Playgroud)

我尝试使用chop,但它只删除了最后一个字符,即.1,在上面的例子中.

上面的最后一部分,即61,可以是任何东西,比如221或2或100.我需要删除后面的最后一个数字字符/.Perl有可能吗?

Tim*_*Tim 9

删除最后一位数的正则表达式替换:

my $str = '/iwmout/sourcelayer/iwm_service/iwm_ear_layer/pomoeron.xml@@/main/lsr_int_vnl46a/61';
$str =~ s/\d+$//;
Run Code Online (Sandbox Code Playgroud)

\d+匹配一系列数字,并$匹配行的结尾.它们被空字符串替换.

  • @Pradeesh,如果这个答案对你有用,请选中复选标记,将其标记为"正确" (5认同)

mae*_*ics 8

@Tim的回答$str =~ s/\d+$//是正确的; 但是,如果要删除字符串的最后n位数字符,但不一定要删除所有字符数字字符,则可以执行以下操作:

my $s = "abc123456";
my $n = 3; # Just the last 3 chars.
$s =~ s/\d{$n}$//; # $s == "abc123"
Run Code Online (Sandbox Code Playgroud)