作业帮 > 综合 > 作业

perl中匹配并修改字符

来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:综合作业 时间:2024/07/07 08:32:00
perl中匹配并修改字符
变量$address=“test_xa@test.com=>chenjian04@test.com";
希望得到/^From:.*test_xa\@test\.com/ DISCARD
我原来是这么写的,发现不行:`echo $address|awk -F "=>" '{print \$1}'|sed 's/@/\\@/g'|sed 's/\./\\\./g'|awk '{print "/^From:.*"$0"/ DISCARD"}'`;
求给个方法.
perl中匹配并修改字符
$address = 'test_xa@test.com=>chenjian04@test.com';
if ($address =~ /([^=>]*)=>.*/) {
$match = $1;
$match =~ s/\@/\\\@/g;
$match =~ s/\./\\\./g;
print "/^From:.*$match/ DISCARD\n";
} else {
print "no\n";
}
再问: 解决了,但是有个问题 这部分([^=>]*)的意思是能解释下吗,我看有个这样解释的 —— 字符[]和[^] []意味着匹配一组字符中的一个,如/a[0123456789]c/将匹配a加数字加c的字符串。与+联合使用例:/d[eE]+f/匹配def、dEf、deef、dEdf、dEEEeeeEef等。^表示除其之外的所有字符,如:/d[^deE]f/匹配d加非e字符加f的字符串。 —— 感觉不太清楚
再答: [^=>]*就是匹配非'='且非'>‘的字符,*表示0个或多个,合起来的意思就是匹配0个或多个非=和>的字符。^在中括号里表示非的意思。 本来[=>]的意思是 '=' 或 '>'的意思,在这个基础上取非的话就是非'='且非'>'了