如何在Perl中使用正则表达式删除子字符串?

时间:2014-11-19 19:24:08

标签: regex perl

给定一个包含多个字符串的文件(每行一个) - 其中将包含以下两个字符串:

de12_QA_IR_OS_HV
de12_IR_OS_HV

(唯一的区别是“QA_”在正确的位置)。

如果正在处理的当前行包含上述某个行,我需要执行一些操作。 如果是,我应该使用没有“QA_”子字符串的字符串值。

我正在使用以下正则表达式来检测值/de12_(QA_)?IR_OS_HV/但是如果使用相同的正则表达式,是否有一种方法可以删除“QA_”?

1 个答案:

答案 0 :(得分:1)

您可以捕捉QA _之前和之后的内容:

if (/(de12_)(QA_)?(IR_OS_HV)/) {
    print $1 . $3, "\n";

或者,使用替换

if (s/de12_(QA_)?IR_OS_HV/de12_IR_OS_HV/) {
    print $_, "\n";
}

但实际上,如果正则表达式匹配,你知道要使用什么字符串:

if (/de12_(QA_)?IR_OS_HV/) {
    print "de12_IR_OS_HV\n";
}