改变词边界

时间:2014-10-03 11:27:35

标签: regex perl word-boundary

我目前有以下内容:

$_[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

有没有办法实现这个目标?

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

使用:

$concatenated_variables = qr/(?<!\$)(var1|var2|var3)/;