Perl: как сделать рекурсивное регулярное выражение, не захватывая дважды - PullRequest
0 голосов
/ 16 января 2020

Мне нужно рекурсивное регулярное выражение для захвата переменных makefile (например, $($(prefix)val)). У меня есть следующее:

 my $varPtrn = qr/(:?\$\((?:\w+|(?-1))+\))/;

Я хочу иметь возможность сделать что-то вроде

 my ($var1,$var2,var3) = $parms =~ /($varPtrn),($varPtrn),($varPtrn)/;

Но это не работает. Кажется, он захватывает каждую запись дважды. Если я сделаю:

 '$(foo)' =~ /^($varPtrn)$/ and print "1:$1 2:$2 3:$3\n";

Я получу:

  1:$(foo) 2:$(foo) 3:

Как бы я написал приведенное выше регулярное выражение, чтобы захватить каждую запись только один раз? (примечание: я использую perl 5,22)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...