替换函数来清理字符串

时间:2014-01-22 05:36:31

标签: perl substitution

我可以拆分

$string = "AA_name" 

进入@tmp数组并获取$ tmp [1]以获取名称并丢弃AA_。 但是,你怎么用s ///做到这一点? 我不知道正则表达式替换前面的所有内容,包括下划线,没有任何东西只留下我的名字。 像

这样的东西
$n = $string =~ s/^_//; 

但我和正则表达式相当不错。

3 个答案:

答案 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/.*[.]//