регулярные выражения

dayw
На сайте с 25.01.2006
Offline
116
935

Доброе время суток!

Вот у меня есть переменная, которая содержит html код, мне нужно вытащить из него все что находтиться в таблице, которая начинается сразу после комментария, т.е., например:

"<!--комментарий--> <table> теги текст и т.д. :) </table>"

Вот мне нужно в отдельную переменную вытащить всю таблицу, после этой таблицы до мне ничего не нужно. Помогите написать для этой задачи написать регулярное выражение.

P.S. и дайте плиз ссылку где мона скачать книгу на русском про регулярные выражения.

Интернет-магазин игровых приставок в Москве (https://savelagame.ru)
Antony69
На сайте с 16.09.2004
Offline
146
#1

Язык программирования какой? Если Perl, то с ним в комплекте мануалы идут весьма неплохие, с примерами.

Заметки SEO аналитика (http://www.seonotes.ru)
Kolyaj
На сайте с 28.03.2006
Offline
69
#2

Регулярное выражение


/(?<=<!--комментарий-->) <table>.*?<\/table>/

Какой язык?

dayw:
P.S. и дайте плиз ссылку где мона скачать книгу на русском про регулярные выражения.

http://www.phpfaq.ru/files/friedl.rar

Фридл Дж. Регулярные выражения. Читаем внимательно и взахлеб. Исчерпывающий материал, написанный простым языком.

dayw
На сайте с 25.01.2006
Offline
116
#3

За ссылку спасибо! качаю...

Язык PHP :)

Напишите пожалуйста подробнее про приведенный код. Я в регулярных вообще ничего не понимаю, так что желателен код на php привести в пример.

С регулярными разбераться по книжке буду, а задачу решить нужно в ближайшее время. заранее спасибо за помощь...

Kolyaj
На сайте с 28.03.2006
Offline
69
#4


if (preg_match("/(?<=<!--комментарий-->) <table>.*?<\/table>/", $html, $matches))
echo "Таблица: " . $matches[0];

P.S. Регулярка по вашему примеру, если хоть один символ не так, работать не будет.

P.P.S. С русскими символами могут быть проблемы, если скрипт и текст в переменной в разных кодировках.

dayw
На сайте с 25.01.2006
Offline
116
#5

А как модернизировать текст, что скрипту было безразлично переходы строк, а то если весь html текст на одной строке - работает, а если есть, то не работает, или как перевести текст в вид одной строки?

lexwrlk
На сайте с 12.10.2005
Offline
130
#6

попробуйте так:


if (preg_match("/(?<=<!--комментарий-->) <table>(\s|.)*?<\/table>/", $html, $matches))
echo "Таблица: " . $matches[0];
СДЛ СДЛу рознь (с) Форест Гамп
Y
На сайте с 02.01.2006
Offline
138
#7
dayw:
Я в регулярных вообще ничего не понимаю

вот это http://phpclub.ru/detail/article/regexp_1 и вот это http://phpclub.ru/detail/article/regexp_2 я очень давно писал специально для тех, кто ничего не понимает ;) материал до сих пор актуален, а комментарии к первой статье говорят сами за себя. Фридла можно прочитать уже после.

М
На сайте с 08.02.2006
Offline
59
#8

Чтобы регулярное выражение рассматривало текст как одну строку существует модификатор s, который вставляется после символов ограничения выражения - на примере кода Kolyaj это выглядит так -

preg_match("/(?<=<!--комментарий-->) <table>.*?<\/table>/s", $html, $matches) 

Кстати, в коде Kolyaj содержаться ошибки, раз уж вы взялись за изучение регул. выражений, то попробуйте их отыскать самостоятельно

dayw
На сайте с 25.01.2006
Offline
116
#9

Огромное спасибо за помощь. Пошел разбираться в регулярных...

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий