我有一个程序可以读取行并更改其中的一部分,只要它前面没有反斜杠即可。
例如,如果将单词 foo 更改为 bar,则句子
Hello foo, thisfoo likes \foo
会成为
Hello bar, thisbar likes \foo
如果该行存储在 $line 中,我的代码是
$line =~ s/[(^\\)]foo/bar/g;
但当然这会导致输出
Hellobar, thibar likes \foo
正则表达式搜索是否有办法找到字符串的某些要求,但不将其包含在更改的内容中?或者是否有某种解决方法。我唯一能想到的就是用\foo
其他字符串替换所有出现的 ,然后再将其替换回来,但这绝对不理想,因为我不能保证输入中会出现什么。
谢谢