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"));
}
}