Regex perl如何删除最后一个'_';?
在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=~/
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;