я в настоящее время следующие:цикла через регулярное выражение и заменить найден экземпляр
# Pre-append "$" to variable names.
# ['"](?:[^'"]*?(?:\\")*)*["'] Matches strings within double or single quotes.
# (*SKIP)(*F) Causes the preceding pattern to fail. Tries to match the pattern on the right side of the | operator using the remaining strings.
my $temp = $entire_line;
while ($temp =~ /['"](?:[^'"]*?(?:\\")*)*["'](*SKIP)(*F)|([A-Za-z0-9_]+)/g){
my $variable_name = $1;
$entire_line =~ s/$variable_name/\$$variable_name/;
}
Учитывая $entire_line = ((factor0 + factor1) * factor2) + factor0
Я хотел бы мой выход быть:
(($factor0 + $factor1) * $factor2) + $factor0
Однако, я м:
(($$factor0 + $factor1) * $factor2) + factor0
Я знаю, что это происходит потому, что он находит первый экземпляр factor0
дважды. Есть ли хороший способ предотвратить это и заменить найденный экземпляр?
Также мне нужно использовать переменную $temp
?
Благодарим за помощь.
Это будет работать только для данного примера. В основном также делает весь сложный синтаксический анализ ненужным. Но, скорее всего, «factorn» был всего лишь примером. – simbabque
@simbabque вы можете показать пример – vks
@vks Спасибо за это. Оказывается, мне не нужно слишком сложное регулярное выражение. Я использовал его раньше и повторил. – 2014-09-25 11:25:17