Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > regexp: жадность квантификаторов


Автор: Ramzai 26.8.2004, 08:15
У меня есть текст вроде

$text = "This is just a [test [one][two] blah [never]c'mon[]";

Мне надо прочитать все заключенное во внутренних скобках, то есть one, two, never. А потом вырезать все со скобками.

Код
while ($text =~ /(?<=\[).+?(?=\])/g) {push @arr, $&;}
foreach $a (@arr) {print "$a\n";}
$text =~ s/\[.+?\]//g;
print "$text\n";


читает "test [one" и не оставляет "[test" (я понимаю почему, но правильный regexp придумать не могу)

Что делать?


Автор: Secandr 26.8.2004, 08:30
делать правельный регексп

Код
$text =~ s/\[[^\[\]]+\]//g;


вырежет без вложений и оставит [test

Элементарно, жадность нужно использовать воблаго, если он жадный пусть жрёт всё кроме ][

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)