Показаны сообщения с ярлыком регулярные выражения. Показать все сообщения
Показаны сообщения с ярлыком регулярные выражения. Показать все сообщения

вторник, 11 января 2011 г.

Perl и динамические регулярные выражения

Нашёл тут у себя старый код, который решал интересную задачу поиска произвольно вложенных конструкций с помощью регулярных выражений. Эх! За что люблю Perl, так это за то что в нём такие мощные regexp'ы. Решение было подсмотрено в книге Дж.Фридла "Регулярные выражения" и называется это решение "Динамические регулярные выражения".

Regexp для проверки правильности вложенности скобок в строке текста выглядит вот так

my $regex;
$regex = qr/ (?:[^()]+ | \( (??{ $regex }) \) )* /x;

if ( $text =~ m/$regex/ ) {
    print "строка валидна\n";
}