Perl:替换与模式匹配的字符串

时间:2019-04-15 22:06:45

标签: regex perl if-statement

如果匹配行首的模式,我想替换整个字符串。我的字符串是$foo = "I have a dog - cat"。 现在,如果正则表达式与“我有一个”匹配,则字符串将替换为“ CHECKED”

我尝试了

$foo =~ tr /I have a/CHECKED/

输出为CHECKED dog -cat,但我不想在正则表达式中添加完整的句子。像$foo =~ /I一样有Dog -cat/CHECKED;

2 个答案:

答案 0 :(得分:3)

$foo = "I have a dog - cat"

$foo =~ s/I have a.*/CHECKED/

perl命令 tr///y///用于音译字母到字母
https://perldoc.perl.org/perlop.html#Quote-Like-Operators

答案 1 :(得分:1)

如果要替换整个字符串,则应使模式与整个字符串匹配:

$foo =~ s/.*I have a.*/CHECKED/;

或者,如果与模式匹配,则只需为字符串分配一个新值:

$foo = 'CHECKED' if $foo =~ /I have a/;