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

Исходное сообщение
"Проблема с разбиением с помощью регулярных выражений"

Отправлено Psich , 31-Июл-03 03:25 
Пытаюсь разбить пременную:

foreach(@heads){
  if($html=~/(.*)$_(.*)/){
    
    ...

    }
  }

Перл просто перестает отзываться. Может ли это быть из-за того что $_ может встречаться несколько раз в разных местах $html? Можно ли с этим что-нибудь сделать?


Содержание

Сообщения в этом обсуждении
"Проблема с разбиением с помощью регулярных выражений"
Отправлено ziben , 31-Июл-03 11:43 
#!/usr/bin/perl

@heads = ("sdfsdfsdf sd fsdf"," sfdfs sdf $_ ffgdfgd"," drryry $_ dfggf$_");

foreach(@heads){
  if($html=~/(.*)$_(.*)/){
      print $_;
  }
}

Если бы еще понять что нужно из этого добиться, но вот я твой пример сделал типа отдельной программкой - ничего не зависает, хотя ничего и не делает :)
Опиши - что оно _должно_ сделать, вместе что-нибудь придумаем. У тебя в переменной $_ в цикле находится целая строка, и что ты этим регулярным выражением хотел добиться?


"Проблема с разбиением с помощью регулярных выражений"
Отправлено Psich , 31-Июл-03 13:06 
Тяжело было сформулировать проблему. Задача состоит в том что дана длинная строка $html в ней по несколько раз встречаются каждый из элементов массива @heads. Необходимо разбить эту переменную так чтобы получилось два массива: в первом номера элементов массива @heads, в том порядке в котором они встречаются в переменной $html, во втором соответственно то, что шло между этими элементами. Приблизительно так.

"Проблема с разбиением с помощью регулярных выражений"
Отправлено konst , 31-Июл-03 15:01 
>Тяжело было сформулировать проблему. Задача состоит в том что дана длинная строка
>$html в ней по несколько раз встречаются каждый из элементов массива
>@heads. Необходимо разбить эту переменную так чтобы получилось два массива: в
>первом номера элементов массива @heads, в том порядке в котором они
>встречаются в переменной $html, во втором соответственно то, что шло между
>этими элементами. Приблизительно так.
Лучше показать пример того чего надо... (сложно представить ситуацию когда нужно в рез-те получить 2 указанных массива)

$html = 'aaaabbbbccccaaaadddeeeeddddffff';
@head = ('aaaa','dddd');

$r = join ('|',@head );
@rest = split( $r, #html); # в этом массиве соберется все чего нет в @head
while ($html =~ s/($r)//) { push(@main,$1) }
# в массиве @main соберутся все значения exist in $html and in @head  


"Проблема с разбиением с помощью регулярных выражений"
Отправлено Psich , 02-Авг-03 03:22 
>>Тяжело было сформулировать проблему. Задача состоит в том что дана длинная строка
>>$html в ней по несколько раз встречаются каждый из элементов массива
>>@heads. Необходимо разбить эту переменную так чтобы получилось два массива: в
>>первом номера элементов массива @heads, в том порядке в котором они
>>встречаются в переменной $html, во втором соответственно то, что шло между
>>этими элементами. Приблизительно так.
>Лучше показать пример того чего надо... (сложно представить ситуацию когда нужно в
>рез-те получить 2 указанных массива)
>
>$html = 'aaaabbbbccccaaaadddeeeeddddffff';
>@head = ('aaaa','dddd');
>
>$r = join ('|',@head );
>@rest = split( $r, #html); # в этом массиве соберется все чего
>нет в @head
>while ($html =~ s/($r)//) { push(@main,$1) }
># в массиве @main соберутся все значения exist in $html and in
>@head