- Помогите с регулярными выражениями плииз, madskull, 11:03 , 14-Апр-06 (1)
>есть строка вида ><h1>blalbla</h1> > >как из нее выдрать текст, заключенный между тегами? >в данном случае blabla. > >делаю так: /$^<h1\|H1>[~<]*<\/h1\|H1>/ > >но не работает. И не будет. Возьмите какой-нибудь талмуд по регекспам и посмотрите, что Вы написали. Зачем "$" в начале? Как, по Вашему, обработчик должен понимать "\|" ? В Вашем случае все просто (если имеются в виду регекспы в перле): /<h1>(.+?)<\/h1>/i в $1 - найденный текст
- Помогите с регулярными выражениями плииз, MTHawk, 11:10 , 14-Апр-06 (2)
>есть строка вида ><h1>blalbla</h1> > >как из нее выдрать текст, заключенный между тегами? >в данном случае blabla. > >делаю так: /$^<h1\|H1>[~<]*<\/h1\|H1>/ > >но не работает. Зачем $ в начале регекспа? Это символ конца строки. Это раз. [~<] - Очевидно подразумавалось все символы кроме <. Тогда это должно выглядеть так [^<] - множество полученное отрицанием. Но вдруг в тексте появится символ < несущий смысловую нагрузку? это два. Если вы хотите использовать альтернативу - ее нужно заключать в круглые скобки (h|H), но в данном случае это нерационально, поскольку есть ключ i дающий регистронезависимость. это три. Что бы "выдрать текст" его тоже нужно заключать в круглые скобки. это четыре. Итак мы получаем. /^<h1>(.+)/<\/h1>/i; Если текст нужно достать с начала строки. Значение в круглых скобках будет находится в переменной $1 Но можно его забрать из регекспа в одну строку. $string='<h1>blalbla</h1>'; ($text)=$string~=/^<h1>(.+)/<\/h1>/i;
- Помогите с регулярными выражениями плииз, karlson, 11:22 , 14-Апр-06 (3)
я просто полный ноль в перле.. но удалось сделать вот так:#!/usr/bin/perl $text = "уыв<h1> hello </h1>ывы <h2>vtoraja stroka</h2>"; $text =~ /<(\w*?).*?>(.*?)<\/\1>/; print $2; он выдает hello но как сделать чтобы выводилось hello vtoraja stroka
- Помогите с регулярными выражениями плииз, karlson, 11:36 , 14-Апр-06 (4)
>я просто полный ноль в перле.. >но удалось сделать вот так: > >#!/usr/bin/perl >$text = "уыв<h1> hello </h1>ывы <h2>vtoraja stroka</h2>"; > >$text =~ /<(\w*?).*?>(.*?)<\/\1>/; > >print $2; > >он выдает hello > >но как сделать чтобы выводилось >hello >vtoraja stroka сделал так #!/usr/bin/perl
$text = "уыв<H1> hello </H1>ывы <h2>vtoraja stroka</h2> <h3> tretja stroka </h3>"; #$text =~ /\<h[1-6]\>(.+)\<\/h[1-6]\>/; while ($text =~ /<(\w*?).*?>(.*?)<\/\1>/g) { print "$2\n"; } спасибо всем кто помог
|