The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Помогите с регулярными выражениями плииз"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Помогите с регулярными выражениями плииз"  
Сообщение от karlson email(??) on 14-Апр-06, 10:42 
есть строка вида
<h1>blalbla</h1>

как из нее выдрать текст, заключенный между тегами?
в данном случае blabla.

делаю так: /$^<h1\|H1>[~<]*<\/h1\|H1>/

но не работает.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "Помогите с регулярными выражениями плииз"  
Сообщение от madskull (ok) on 14-Апр-06, 11:03 
>есть строка вида
><h1>blalbla</h1>
>
>как из нее выдрать текст, заключенный между тегами?
>в данном случае blabla.
>
>делаю так: /$^<h1\|H1>[~<]*<\/h1\|H1>/
>
>но не работает.

И не будет. Возьмите какой-нибудь талмуд по регекспам и посмотрите, что Вы написали.
Зачем "$" в начале? Как, по Вашему, обработчик должен понимать "\|" ?

В Вашем случае все просто (если имеются в виду регекспы в перле):
/<h1>(.+?)<\/h1>/i
в $1 - найденный текст

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

2. "Помогите с регулярными выражениями плииз"  
Сообщение от MTHawk email(??) on 14-Апр-06, 11:10 
>есть строка вида
><h1>blalbla</h1>
>
>как из нее выдрать текст, заключенный между тегами?
>в данном случае blabla.
>
>делаю так: /$^<h1\|H1>[~<]*<\/h1\|H1>/
>
>но не работает.

Зачем $ в начале регекспа? Это символ конца строки. Это раз.
[~<] - Очевидно подразумавалось все символы кроме <.
Тогда это должно выглядеть так [^<] - множество полученное отрицанием. Но вдруг в тексте появится символ < несущий смысловую нагрузку? это два.
Если вы хотите использовать альтернативу  - ее нужно заключать в круглые скобки
(h|H), но в данном случае это нерационально, поскольку есть ключ i дающий регистронезависимость. это три.
Что бы "выдрать текст" его тоже нужно заключать в круглые скобки. это четыре.
Итак мы получаем.
/^<h1>(.+)/<\/h1>/i;
Если текст нужно достать с начала строки.
Значение в круглых скобках будет находится в переменной $1
Но можно его забрать из регекспа в одну строку.

$string='<h1>blalbla</h1>';
($text)=$string~=/^<h1>(.+)/<\/h1>/i;

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

3. "Помогите с регулярными выражениями плииз"  
Сообщение от karlson email(??) on 14-Апр-06, 11:22 
я просто полный ноль в перле..
но удалось сделать вот так:

#!/usr/bin/perl
$text = "уыв<h1> hello </h1>ывы <h2>vtoraja stroka</h2>";

$text =~ /<(\w*?).*?>(.*?)<\/\1>/;

print $2;

он выдает hello

но как сделать чтобы выводилось
hello
vtoraja stroka

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

4. "Помогите с регулярными выражениями плииз"  
Сообщение от karlson email(??) on 14-Апр-06, 11:36 
>я просто полный ноль в перле..
>но удалось сделать вот так:
>
>#!/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";

}

спасибо всем кто помог

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру