我可以拆分
$string = "AA_name"
进入@tmp数组并获取$ tmp [1]以获取名称并丢弃AA_。 但是,你怎么用s ///做到这一点? 我不知道正则表达式替换前面的所有内容,包括下划线,没有任何东西只留下我的名字。 像
这样的东西$n = $string =~ s/^_//;
但我和正则表达式相当不错。
答案 0 :(得分:1)
您可以使用:
$string =~ s/^[^_]+_//;
这意味着替换任何非下划线的前导字符和下划线,没有任何内容;这意味着随后的下划线留在那里,即
AA_My_Name ==> My_Name
如果要删除最后一个'_',请使用:
$string =~ s/^.+_//;
可以使用其他分隔物。如果你想使用'。'然后记得用'\'来逃避它。
请注意,您不必将结果分配给任何内容。 s ///修改参数字符串。
答案 1 :(得分:0)
您可以使用以下正则表达式
$string = "AA_name";
($name,undef) = $string =~ /(.*)_.*/;
print "name=$name", ",Val=" , $string;
答案 2 :(得分:0)
您可以执行以下操作:
use strict;
use warnings;
my $string = "AA_name";
( my $n = $string ) =~ s/.*_//;
print $n;
输出:
name
如果分隔符是点,您可以使用s/.*\.//
(转义点),也可以使用字符类:s/.*[.]//
。