Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Опять регулярные.....

9.9K
29 августа 2005 года
m1rage
14 / / 09.08.2005
Помогите составить регулярное выражение.

$var=" <table>bla bla1</table><table>bla bla2</table>";

while($var=~ m |(?:<table>(.*)+<\/table>)+|gi)
{ print $1; }

выводит на экран: bla bla1</table><table>bla bla2


как сделать чтоб одним проходом цикла выводилось bla bla1, а вторым bla bla2 ?
8
30 августа 2005 года
mfender
3.5K / / 15.06.2005
Регулярным выражением тут не поможешь.
Считать надо.
Хотя, если в данном случае написать <table>(.*?)<\/table>, то сработает. Но, боюсь, что таких случаев не бывает.
253
30 августа 2005 года
Proger_XP
1.5K / / 07.08.2004
Цитата:
Originally posted by mfender
Регулярным выражением тут не поможешь.
Считать надо.
Хотя, если в данном случае написать <table>(.*?)<\/table>, то сработает. Но, боюсь, что таких случаев не бывает


Можно так попробовать:
<table>([^<]*)<\/table>

9.9K
30 августа 2005 года
m1rage
14 / / 09.08.2005
спасибо за помощь

мне первый вариант кое как подходит....после внушительной доработки :)

второй дейтсвительно уж очень к этому конкретному случаю привязан...хотя не спорю - правильный :)
300
30 августа 2005 года
ReDrum
689 / / 20.04.2000
Свой сниплет внесу

 
Код:
#!/usr/bin/perl

use strict;
use warnings;

my  $var=" <table>bla1</table><table>bla2</table>";

while ($var =~ /<table>(\w+)<\/table>/gco) {
    print " variable - $1 \n";
}
300
31 августа 2005 года
ReDrum
689 / / 20.04.2000
Цитата:
Originally posted by Proger_XP
Если в таблице будут не только символы слов?
Например, "@" или "$"



В этом случе, нужно подправить регулярку, на то что нужно выкусить.

ЗЫ Кто удаляет?

9.9K
31 августа 2005 года
m1rage
14 / / 09.08.2005
[QUOTE]Originally posted by ReDrum
В этом случе, нужно подправить регулярку, на то что нужно выкусить.

да это-то понятно :) ...
но все равно спасибо ...
что я тут ждал - это как раз этого -> (.*?) :)
253
31 августа 2005 года
Proger_XP
1.5K / / 07.08.2004
Цитата:
Originally posted by ReDrum
Кто удаляет?


Странно %)
Напишу опять ))
Если в таблице будут не только символы слов?
Например, "@" или "$"

4.7K
06 сентября 2005 года
Extractor
151 / / 26.08.2005
Цитата:
Originally posted by mfender
Регулярным выражением тут не поможешь.
Считать надо.
Хотя, если в данном случае написать <table>(.*?)<\/table>, то сработает. Но, боюсь, что таких случаев не бывает.


почему не поможет? и почему не бывает?

253
06 сентября 2005 года
Proger_XP
1.5K / / 07.08.2004
Цитата:
Originally posted by Extractor
почему не поможет? и почему не бывает?


Уже решили ))
Читай посты до конца топика

4.7K
06 сентября 2005 года
Extractor
151 / / 26.08.2005
Цитата:
Originally posted by Proger_XP
Уже решили ))
Читай посты до конца топика


я читал все, просто интресно почему это такой ситуации не бывает? в рэгэкспе будут собраны все символы между тэгами таблицы, если человеку так нужно?
еще в рэ. <table>([^<]*)<\/table>, я думаю нужно так <table>([^<]*?)<\/table>

338
06 сентября 2005 года
chigevara
529 / / 29.09.2003
Цитата:
Originally posted by Extractor
я читал все, просто интресно почему это такой ситуации не бывает? в рэгэкспе будут собраны все символы между тэгами таблицы, если человеку так нужно?
еще в рэ. <table>([^<]*)<\/table>, я думаю нужно так <table>([^<]*?)<\/table>


Приведи пример таблицы без вложенных тегов...

9.9K
07 сентября 2005 года
m1rage
14 / / 09.08.2005
Цитата:
Originally posted by chigevara
Приведи пример таблицы без вложенных тегов...



Вообщем смотрите что мне было нужно :) - для чего мне надо было выбрать все что внутри тэга <table>:

у меня было регулярное, которое "дуплило" одну таблицу...
а потом понадобилось раздуплить несколько таблиц...
Вот так вот...

Может это и не самый удачная реализация, но изменять пришлось очень мало в программном коде

4.7K
07 сентября 2005 года
Extractor
151 / / 26.08.2005
Цитата:
Originally posted by chigevara
Приведи пример таблицы без вложенных тегов...



я ж писал, человеку нужно все что между этими тэгами... к тому же он сам об этом сказал
этими т.е. - <table>

253
08 сентября 2005 года
Proger_XP
1.5K / / 07.08.2004
Зачем вообще ставить ? после *?
Она и так обозначает, что фрагмент может встречатся любое количество раз(хоть 0)
И к чему он вообще относится? %)
9.9K
08 сентября 2005 года
m1rage
14 / / 09.08.2005
Цитата:
Originally posted by Proger_XP
Зачем вообще ставить ? после *?
Она и так обозначает, что фрагмент может встречатся любое количество раз(хоть 0)
И к чему он вообще относится? %)




не знаю точно почему, НО без знака вопроса НЕ РАБОТАЕТ! :)

4.7K
09 сентября 2005 года
Extractor
151 / / 26.08.2005
Цитата:
Originally posted by Proger_XP
Зачем вообще ставить ? после *?
Она и так обозначает, что фрагмент может встречатся любое количество раз(хоть 0)
И к чему он вообще относится? %)



в задаче сказано, нужно найти содержимое таблици(примерно так), если убрать ? тогда оно найде все, что находится между первый раз встречающийся тэг <table> и самый последний </table>. Так называемый жадный и не жадный рэгэксп, ? обозначает не жадный, что значит до первогопопавшегося совпадения

239
09 сентября 2005 года
Dolonet
1.7K / / 20.05.2000
Цитата:
Originally posted by Proger_XP
Зачем вообще ставить ? после *?
Она и так обозначает, что фрагмент может встречатся любое количество раз(хоть 0)
И к чему он вообще относится? %)


Хи-хи :)

Потому что в случае ? после * вопросительный знак выступает в роли квантификатора жадности, т.е. рассмоатривает наименьшее возможное количество совпадений по "*", чтобы выражение возвращало истинное значение.

Для примера, если у нас текст:

 
Код:
123

То по регулярной строке ".*<\/b>" у нас будет только одно совпадение, а по строке ".*?<\/b>" - два.

RTFM..
253
11 сентября 2005 года
Proger_XP
1.5K / / 07.08.2004
Значит RegEx в PHP сильнее отличается от RegExp в JS(если мы про него говорим ;))
338
12 сентября 2005 года
chigevara
529 / / 29.09.2003
Цитата:
Originally posted by Proger_XP
Значит RegEx в PHP сильнее отличается от RegExp в JS(если мы про него говорим ;))


Ээээ... судя по =~ речь шла о перле :D

253
13 сентября 2005 года
Proger_XP
1.5K / / 07.08.2004
Цитата:
Originally posted by chigevara
Ээээ... судя по =~ речь шла о перле


Хм.... ))
Уважаемые постеры!
Пишите пожалуйста язык который вы хотите юзать!

9.9K
13 сентября 2005 года
m1rage
14 / / 09.08.2005
Цитата:
Originally posted by Proger_XP
Хм.... ))
Уважаемые постеры!
Пишите пожалуйста язык который вы хотите юзать!



исходный пост предполагался на перле :)

4.7K
14 сентября 2005 года
Extractor
151 / / 26.08.2005
в данном случае не вижу разницы, а в JS такое тоже работает и на сколько я знаю стандарт у них один - PCRE или POSIX(но не о нем речь)
338
14 сентября 2005 года
chigevara
529 / / 29.09.2003
Цитата:
Originally posted by Extractor
в данном случае не вижу разницы, а в JS такое тоже работает и на сколько я знаю стандарт у них один - PCRE или POSIX(но не о нем речь)


Разница в синтаксисе. И разница достаточная, что бы понять что она есть. А в JS перл-подобные реги, но не PCRE, или я ошибаюсь?

4.7K
15 сентября 2005 года
Extractor
151 / / 26.08.2005
Цитата:
Originally posted by chigevara
Разница в синтаксисе. И разница достаточная, что бы понять что она есть. А в JS перл-подобные реги, но не PCRE, или я ошибаюсь?


PCRE - Perl-Compatible Regular Expresion
думаю этим все сказано, к тому же о POSIX сказано было для того чтобы указать, что есть еще виды рэгэксов, просто не удачно выразился, нужно было сказать не "или", а "еще существует"

253
16 сентября 2005 года
Proger_XP
1.5K / / 07.08.2004
Цитата:
Originally posted by Extractor
PCRE - Perl-Compatible Regular Expresion
думаю этим все сказано, к тому же о POSIX сказано было для того чтобы указать, что есть еще виды рэгэксов, просто не удачно выразился, нужно было сказать не "или", а "еще существует"


Большинство RegExp сделаны по похожей схеме, как многие языки похожи на C(Java, JS и т.д)

338
18 сентября 2005 года
chigevara
529 / / 29.09.2003
Цитата:
Originally posted by Extractor
PCRE - Perl-Compatible Regular Expresion
думаю этим все сказано,


Да нихрена этим не сказано...
Я же говорю, перл-подобные, а не перл-компатибл.
Насколько мне известно, синтаксис у явы-скрипта является подмножеством перловых регов, а вот движок у них свой, причем помнится, тестил по примерам из "mastering regular expressions", и вроде как движок получался DFA, у перла же помнится NFA. Хотя могу ошибаться.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог