Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Perl: Регулярные выражения > две сохраняющие группы |
Автор: evya 10.4.2013, 12:50 |
подскажите господа! есть регулярное выражение с двумя сохраняющими группами, можно ли получить их в условии??? если значений множество. if (@code,@body)=$msg3=~m/^(.*?)^\s(.*?)/g) или обязательно в цикл ставить, если в цикле то как можно проверить условие выполнения регулярки |
Автор: DurRandir 10.4.2013, 14:24 | ||
Не очень понятно, в чём вопрос (и код только запутывает). Вот три рабочих варианта:
|
Автор: evya 10.4.2013, 14:59 |
а если поиск глобален? my (@b, @r) = $foo =~ /(.).(.)/g; if ($b && $r){ } |
Автор: DurRandir 10.4.2013, 17:19 | ||||
Если в списочном присваивании встречается массив, то он забирает в себя все значения до конца, и все переменные правее него будут пустыми. Это особенность перла, которую надо иметь в виду. Поэтому один вызов m//g вернёт всё в один массив. Если надо разбивать сразу на 2 части - нужен цикл, но можно разбить и после, в духе:
|
Автор: evya 10.4.2013, 20:32 |
Все примерно понятно! а в push можно расшифровать цикл немного по операциям @{++$i % 2 ? \@first : \@second}, $_ for @foo; |
Автор: DurRandir 10.4.2013, 21:11 | ||
Значит, не понятно) Лучше тогда так:
|
Автор: krypt3r 11.4.2013, 06:09 | ||
Весна! ![]() |