我目前有以下内容:
$_[0] =~ s/***regex here***(*SKIP)(*F)|\b($concatenated_variables)\b/\$$1/g;
$concatenated_variables
包含由|
分隔的变量名称。
此工作正常除外,如果\b($concatenated_variables)\b
找到的匹配项之前已经有$
,我不希望替换发生。
例如:
$concatenated_variables = count|a|var3
$_[0] = for count in range(3): print count; print "hello"; ++a
如果我使用:
$_[0] =~ s/(?:['"](?:[^'"]*?(?:\\")*)*["'])(*SKIP)(*F)|(?<!\$)($concatenated_variables)\b/\$$1/g;
我明白了:
for coun$t in range(3): prin$t coun$t; prin$t "yayay"; ++$a
而我应该得到:
for $count in range(3): print $count; print "yayay"; ++$a
有没有办法实现这个目标?
感谢您的帮助。
答案 0 :(得分:2)
使用:
$concatenated_variables = qr/(?<!\$)(var1|var2|var3)/;