Опять регулярные.....
$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 ?
Считать надо.
Хотя, если в данном случае написать <table>(.*?)<\/table>, то сработает. Но, боюсь, что таких случаев не бывает.
Регулярным выражением тут не поможешь.
Считать надо.
Хотя, если в данном случае написать <table>(.*?)<\/table>, то сработает. Но, боюсь, что таких случаев не бывает
Можно так попробовать:
<table>([^<]*)<\/table>
мне первый вариант кое как подходит....после внушительной доработки :)
второй дейтсвительно уж очень к этому конкретному случаю привязан...хотя не спорю - правильный :)
use strict;
use warnings;
my $var=" <table>bla1</table><table>bla2</table>";
while ($var =~ /<table>(\w+)<\/table>/gco) {
print " variable - $1 \n";
}
Если в таблице будут не только символы слов?
Например, "@" или "$"
В этом случе, нужно подправить регулярку, на то что нужно выкусить.
ЗЫ Кто удаляет?
В этом случе, нужно подправить регулярку, на то что нужно выкусить.
да это-то понятно :) ...
но все равно спасибо ...
что я тут ждал - это как раз этого -> (.*?) :)
Кто удаляет?
Странно %)
Напишу опять ))
Если в таблице будут не только символы слов?
Например, "@" или "$"
Регулярным выражением тут не поможешь.
Считать надо.
Хотя, если в данном случае написать <table>(.*?)<\/table>, то сработает. Но, боюсь, что таких случаев не бывает.
почему не поможет? и почему не бывает?
почему не поможет? и почему не бывает?
Уже решили ))
Читай посты до конца топика
Уже решили ))
Читай посты до конца топика
я читал все, просто интресно почему это такой ситуации не бывает? в рэгэкспе будут собраны все символы между тэгами таблицы, если человеку так нужно?
еще в рэ. <table>([^<]*)<\/table>, я думаю нужно так <table>([^<]*?)<\/table>
я читал все, просто интресно почему это такой ситуации не бывает? в рэгэкспе будут собраны все символы между тэгами таблицы, если человеку так нужно?
еще в рэ. <table>([^<]*)<\/table>, я думаю нужно так <table>([^<]*?)<\/table>
Приведи пример таблицы без вложенных тегов...
Приведи пример таблицы без вложенных тегов...
Вообщем смотрите что мне было нужно :) - для чего мне надо было выбрать все что внутри тэга <table>:
у меня было регулярное, которое "дуплило" одну таблицу...
а потом понадобилось раздуплить несколько таблиц...
Вот так вот...
Может это и не самый удачная реализация, но изменять пришлось очень мало в программном коде
Приведи пример таблицы без вложенных тегов...
я ж писал, человеку нужно все что между этими тэгами... к тому же он сам об этом сказал
этими т.е. - <table>
Она и так обозначает, что фрагмент может встречатся любое количество раз(хоть 0)
И к чему он вообще относится? %)
Зачем вообще ставить ? после *?
Она и так обозначает, что фрагмент может встречатся любое количество раз(хоть 0)
И к чему он вообще относится? %)
не знаю точно почему, НО без знака вопроса НЕ РАБОТАЕТ! :)
Зачем вообще ставить ? после *?
Она и так обозначает, что фрагмент может встречатся любое количество раз(хоть 0)
И к чему он вообще относится? %)
в задаче сказано, нужно найти содержимое таблици(примерно так), если убрать ? тогда оно найде все, что находится между первый раз встречающийся тэг <table> и самый последний </table>. Так называемый жадный и не жадный рэгэксп, ? обозначает не жадный, что значит до первогопопавшегося совпадения
Зачем вообще ставить ? после *?
Она и так обозначает, что фрагмент может встречатся любое количество раз(хоть 0)
И к чему он вообще относится? %)
Хи-хи :)
Потому что в случае ? после * вопросительный знак выступает в роли квантификатора жадности, т.е. рассмоатривает наименьшее возможное количество совпадений по "*", чтобы выражение возвращало истинное значение.
Для примера, если у нас текст:
То по регулярной строке ".*<\/b>" у нас будет только одно совпадение, а по строке ".*?<\/b>" - два.
RTFM..
Значит RegEx в PHP сильнее отличается от RegExp в JS(если мы про него говорим ;))
Ээээ... судя по =~ речь шла о перле :D
Ээээ... судя по =~ речь шла о перле
Хм.... ))
Уважаемые постеры!
Пишите пожалуйста язык который вы хотите юзать!
Хм.... ))
Уважаемые постеры!
Пишите пожалуйста язык который вы хотите юзать!
исходный пост предполагался на перле :)
в данном случае не вижу разницы, а в JS такое тоже работает и на сколько я знаю стандарт у них один - PCRE или POSIX(но не о нем речь)
Разница в синтаксисе. И разница достаточная, что бы понять что она есть. А в JS перл-подобные реги, но не PCRE, или я ошибаюсь?
Разница в синтаксисе. И разница достаточная, что бы понять что она есть. А в JS перл-подобные реги, но не PCRE, или я ошибаюсь?
PCRE - Perl-Compatible Regular Expresion
думаю этим все сказано, к тому же о POSIX сказано было для того чтобы указать, что есть еще виды рэгэксов, просто не удачно выразился, нужно было сказать не "или", а "еще существует"
PCRE - Perl-Compatible Regular Expresion
думаю этим все сказано, к тому же о POSIX сказано было для того чтобы указать, что есть еще виды рэгэксов, просто не удачно выразился, нужно было сказать не "или", а "еще существует"
Большинство RegExp сделаны по похожей схеме, как многие языки похожи на C(Java, JS и т.д)
PCRE - Perl-Compatible Regular Expresion
думаю этим все сказано,
Да нихрена этим не сказано...
Я же говорю, перл-подобные, а не перл-компатибл.
Насколько мне известно, синтаксис у явы-скрипта является подмножеством перловых регов, а вот движок у них свой, причем помнится, тестил по примерам из "mastering regular expressions", и вроде как движок получался DFA, у перла же помнится NFA. Хотя могу ошибаться.