Regex perl如何删除最后一个'_';?

Regex perl如何删除最后一个'_';?,regex,perl,Regex,Perl,在perl中,如何编写这个正则表达式 my $line = "job_name_1_" ; #end with '_' $pattern = "_$"; # tried "\_$", still doesn't work if($line =~ m/$pattern/){ # remove last "_" ? } -#output should be "job_name" 如何做到这一点?试试这个: $test = "test_"; $test = $1 if($test=~/

在perl中,如何编写这个正则表达式

my $line = "job_name_1_" ; #end with '_'

$pattern = "_$"; # tried "\_$", still doesn't work

if($line =~ m/$pattern/){
    # remove last "_" ?
}

-#output should be "job_name"
如何做到这一点?

试试这个:

$test = "test_";
$test = $1 if($test=~/(.*)_$/);
print $test

要删除最后一个下划线字符,只需执行以下操作:

$line =~ s/_$//;

很抱歉,如果其他人也发布了此消息:)

以删除尾随下划线:(
foo_uu
⇒ <代码>foo_,
foo_条
⇒ <代码>食物栏)

要删除所有尾随下划线:(
foo\uuuu
⇒ <代码>foo,
foo\u bar
⇒ <代码>食物栏)


要删除最后一个下划线:(
foo_uuu
⇒ <代码>foo_,
foo_条
⇒ <代码>foobar)


延迟是如此有趣:)我立即纠正了它,但似乎太晚了!:)它可以删除的不仅仅是最后一个下划线。@ikegami不,它不能:)修复:)此答案仅在下划线是行中的最后一个字符时删除下划线。如果要删除字符串中任何位置的最后一个下划线,请查看@FailedDev的答案。您的意思是“输出应为“作业名称1”吗?是的,但OP要求删除最后一个下划线,但没有指定这是否也是字符串前的最后一个字符,除非我弄错了。而且,如果你提到你不需要“吃”所有其他角色就可以到达那里。请参阅@Kurt的答案。@TLP。。。除了那些包含换行符的。
$subject =~ s/_(?=[^_]*$)//;
$line =~ s/_\z//;
$line =~ s/_+\z//;
$line =~ s/_(?!.*_)//s;

$line =~ s/^.*\K_//s;