URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 9444
[ Назад ]

Исходное сообщение
"Как применить регулярные выражения на лету"

Отправлено kydesnik , 26-Апр-12 11:49 
Есть исходная строка (а точнее большой файл).
В зависимости от ситуации надо применить определенное регулярное выражение.
Допустим регулярные выражения помещаный в массив.
Как мне на лету применить регулярное выражение.

Например (пример чуток корявый, не пинайте, просто хотелось передать суть вопроса более наглядно):
my $string_search = "Hello 77!";
my $string_reg[0] = "\s(\d+)";
$string_reg[1] = "(\w+)\s";

if ($string_search =~ /$string_reg[0]/gi) # прекрасно понимаю что так нельзя делать, но очень хочется на лету применять нужную регулярку
{
    print "COOOL!!!";
}


Содержание

Сообщения в этом обсуждении
"Как применить регулярные выражения на лету"
Отправлено parad , 26-Апр-12 12:06 
my @rg = ( qr/\s(\d+)/, qr/(\w+)\s/ );

if( ' 11' =~ $rg[0] )
    { print "A\n"; }

if( ' 11' =~ $rg[1] )
    { print "B\n"; }

зри в поисковике perl regexp compile


"Как применить регулярные выражения на лету"
Отправлено kydesnik , 26-Апр-12 12:15 
> my @rg = ( qr/\s(\d+)/, qr/(\w+)\s/ );
> if( ' 11' =~ $rg[0] )
>     { print "A\n"; }
> if( ' 11' =~ $rg[1] )
>     { print "B\n"; }
> зри в поисковике perl regexp compile

Блин, parad, спасибо огромное. А то мозг чуть не сломал. Все оказалось просто, но почему-то сам до этой реализации не додумался. Понял для себя что не знал как записать в массив регулярку, а ты ее просто записал qr/\s(\d+)/. Еще раз спасибо за правильное рабочее решение моей проблемы и за оперативность отдельный поклон.