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

Regex 如何在perl中从字符串中删除最后n个数字字符,regex,perl,character,Regex,Perl,Character,在这种情况下,我需要删除/字符后的最后一个n数字字符 例如: /iwmout/sourcelayer/iwm_service/iwm_ear_layer/pomoeron.xml@@/main/lsr_int_vnl46a/61 在最后一个/之后,我需要从行中去掉数字61,以便输出 /iwmout/sourcelayer/iwm_service/iwm_ear_layer/pomoeron.xml@@/main/lsr_int_vnl46a/ 我尝试使用chop,但在上面的示例中,它只删除最

在这种情况下,我需要删除
/
字符后的最后一个
n
数字字符

例如:

/iwmout/sourcelayer/iwm_service/iwm_ear_layer/pomoeron.xml@@/main/lsr_int_vnl46a/61
在最后一个
/
之后,我需要从行中去掉数字61,以便输出

/iwmout/sourcelayer/iwm_service/iwm_ear_layer/pomoeron.xml@@/main/lsr_int_vnl46a/
我尝试使用chop,但在上面的示例中,它只删除最后一个字符,即1


上面的最后一部分,即61,可以是任何东西,比如221、2或100任何东西。我需要去掉
/
后面的最后一个数字字符。在Perl中是否可以用正则表达式替换删除最后的数字:

my $str = '/iwmout/sourcelayer/iwm_service/iwm_ear_layer/pomoeron.xml@@/main/lsr_int_vnl46a/61';
$str =~ s/\d+$//;

\d+
匹配一系列数字,
$
匹配行尾。它们被替换为空字符串。

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

my $s = "abc123456";
my $n = 3; # Just the last 3 chars.
$s =~ s/\d{$n}$//; # $s == "abc123"

虽然这回答了问题的标题,但它并没有回答Pradeesh实际提出的问题:)非常感谢你的回答。我的问题是,我不确定“n”的确切值是多少。当我从文件中逐行读取时,它一直在变化。蒂姆的回答起了作用:)。@蒂姆:是的-这就是为什么我在开始回答时向你点头=)@Pradeesh,如果这个答案对你有效,请选中复选标记,将其标记为“正确”
// Code to remove last n number of strings from a string.
// Import common lang jar
import org.apache.commons.lang3.StringUtils;

public class Hello {
    public static void main(String[] args) {
        String str = "Hello World";
        System.out.println(StringUtils.removeEnd(str, "ld"));
    }
}