0

我目前有以下内容:

$_[0] =~ s/***regex here***(*SKIP)(*F)|\b($concatenated_variables)\b/\$$1/g;

$concatenated_variables包含由 a 分隔的变量名称|

\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

有没有办法做到这一点?

谢谢你的帮助。

4

1 回答 1

2

利用:

$concatenated_variables = qr/(?<!\$)(var1|var2|var3)/;
于 2014-10-03T11:43:05.180 回答