Forum Webscript.Ru

Программирование => PHP => Тема начата: kosm от 29 Мая 2003, 14:35:20

Название: Помогите плиз составить RegExp
Отправлено: kosm от 29 Мая 2003, 14:35:20
Никак не могу разобраться, как с помощью регекспа выделить текст от начала до N-го петтерна?
Т.е. к примеру есть такой текст:
--
тут какой-то текст
  • Заголовок 1

  • Еще текст
  • Заголовок 2

  • И еще текст
  • Заголовок 3

  • И тд

    Так вот как бы составить регексп так, чтобы выделить текст от начала, до начала 2-го заголовка? До первого (ограничивая жадность) или последнего могу:
    (^.*?(
  • ))
    А вот как бы до конкретного? :(
    Или это уже делается средствами php?
  • Название: Помогите плиз составить RegExp
    Отправлено: D1g174LM4n14c от 29 Мая 2003, 15:23:21
  • Заголовок 2
  • Название: Помогите плиз составить RegExp
    Отправлено: kosm от 29 Мая 2003, 15:28:07
    D1g174LM4n14c
    В прямом смысле понятно. Только вот если я не знаю текста заголовка?
    Название: Помогите плиз составить RegExp
    Отправлено: D1g174LM4n14c от 29 Мая 2003, 16:26:59
    "Поиграйся" с кванторами {...}
    Название: Помогите плиз составить RegExp
    Отправлено: kosm от 10 Июня 2003, 16:56:13
    Для примера берем кусок html
    Цитировать

  • Topic 1
  • Topic 2
  • Topic 3
  • Topic 4


  • Под него регексп:    (?:(.+?))
    Выберает все Topic X
    Как бы именно выдрать например по Topic 3 ?

    {} ни к чему не приводят :(

    Есть у кого какие мысли?
    Название: Помогите плиз составить RegExp
    Отправлено: FreeSpace от 10 Июня 2003, 22:22:02
    int preg_match ( string pattern, string subject [, array matches [, int flags]] )
    Вот в matches и будут твои результаты. Если сразу не разберешься, напиши так:
    echo "
    ";
    print_r($matches);
    echo "
    ";
    exit;   // <-- это по желанию
    Название: Помогите плиз составить RegExp
    Отправлено: kosm от 11 Июня 2003, 12:36:57
    Ок, так я найду все вхождения и выберу какой мне надо (скажем второй по счету - "Topic 2"). А как мне взять теперь текст от начала (текста) до "Topic 2"?
    Название: Помогите плиз составить RegExp
    Отправлено: mike от 11 Июня 2003, 13:07:09
    Есть такой вариант c иcпользованием {}:
    (.*?(
  • .*?){n})


  • где n - число захватываемых заголовков. Т.е. если нужно выделить текст до 2-го, то n =1 и {} можно не использовать.
  • Название: Помогите плиз составить RegExp
    Отправлено: FreeSpace от 11 Июня 2003, 15:06:34
    Цитировать
    kosm
    А как мне взять теперь текст от начала (текста) до "Topic 2"?

    $needed_text = substr($whole_text, 0, strpos($needed_text, "
  • Topic 3") - 1);