ФорумПрограммированиеPHP для идиотов → Регулярка

Регулярка

  • Lirck

    Сообщения: 1658 Репутация: N Группа: Джедаи

    Spritz 21 августа 2009 г. 10:16

    Как получить значение самого вложенного элемента такой структуры?
    [1[2]] - получаем 2.

    Для структур типа XML можно использовать следующее:
    #<x(?:[^>]*)>(((?!</?x(?:[^>]*)>).)*)</x>#si

    или даже упростить:
    #<x>(((?!</?x>).)*)</x>#si

    <x>1<x>2</x></x> - получаем 2.
    Спустя 93 сек.
    #\[\?\s*(((?!(?:\[\?\s*|\s*\])).)*)\s*\]#si

    :)
  • Lirck

    Сообщения: 1658 Репутация: N Группа: Джедаи

    Spritz 21 августа 2009 г. 12:23, спустя 2 часа 6 минут 58 секунд

    вот такая шняга делает разбор
    #\[\s*((?:(?!(?:\[\s*|\s*\])).)*)\s*\]#Usi


    [1[2[3]]] - получаем 3

    не доходить как сделать. чтобы получали не весь текст, а находящийся токо в круглых скобках?
    [1[2[xxx(3)xxx]]] - 3
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 21 августа 2009 г. 13:30, спустя 1 час 6 минут 41 секунду

    Ты парсер бб-кодов делаешь?
    Спустя 64 сек.

    [1[2[3]]] - получаем 3

    не доходить как сделать. чтобы получали не весь текст, а находящийся токо в круглых скобках?
    [1[2[xxx(3)xxx]]] - 3


    А так что ты получаешь?
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • Lirck

    Сообщения: 1658 Репутация: N Группа: Джедаи

    Spritz 21 августа 2009 г. 13:34, спустя 4 минуты 11 секунд

    получаю xxx(3)xxx
    конечно можно воспользоваться второй регуляркой, но можно все решить одной

    Ты парсер бб-кодов делаешь?

    абсолютно нет)
  • Lirck

    Сообщения: 1658 Репутация: N Группа: Джедаи

    Spritz 21 августа 2009 г. 14:12, спустя 38 минут 17 секунд

    бля)
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 21 августа 2009 г. 14:17, спустя 4 минуты 32 секунды

    Led Zeppelin
    респект!
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • Lirck

    Сообщения: 1658 Репутация: N Группа: Джедаи

    Spritz 21 августа 2009 г. 14:18, спустя 1 минуту 18 секунд


    Led Zeppelin
    респект!

    а насчет регулярки?)
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 21 августа 2009 г. 14:18, спустя 5 секунд

    #\[\?\s*(((?!(?:\[\?\s*|\s*\])).)*)\s*\]#si


    а что значит "\?"?
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • Lirck

    Сообщения: 1658 Репутация: N Группа: Джедаи

    Spritz 21 августа 2009 г. 14:24, спустя 5 минут 58 секунд

    а, это конструкция должна начинаться на [?, а не на [ как я показал в примерах))
    #\[\s*((?:(?!(?:\[\s*|\s*\])).)*)\s*\]#Usi

    вот верная регулярка)
    а ваще лучше работать с такой
    #<x>(((?!</?x>).)*)</x>#si
    она легче воспринимается, и переделать под […] не составит мне труда)
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 21 августа 2009 г. 14:25, спустя 1 минуту 11 секунд

    #\[\s*((?:(?!(?:\[\s*|\s*\])).)*)\s*\]#Usi
    для чего точка в регулярке?
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • Lirck

    Сообщения: 1658 Репутация: N Группа: Джедаи

    Spritz 21 августа 2009 г. 14:28, спустя 3 минуты 2 секунды

    я хз но без нее не работает вообще)))
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 21 августа 2009 г. 14:35, спустя 6 минут 56 секунд

    где спиздил регулярку?))
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • Lirck

    Сообщения: 1658 Репутация: N Группа: Джедаи
  • vasa_c

    Сообщения: 3131 Репутация: N Группа: в ухо

    Spritz 21 августа 2009 г. 14:43, спустя 6 минут 20 секунд

    а более подробно описать задачу?
  • Lirck

    Сообщения: 1658 Репутация: N Группа: Джедаи

    Spritz 21 августа 2009 г. 14:46, спустя 3 минуты 21 секунду

    задача вытащить из элементов, в которых больше нет элементов, текст, который расположен в скобках. используется не xml, это чисто для примера
    <element>text<element>text(truetext)</element></element> - находит truetext

Пожалуйста, авторизуйтесь, чтобы написать комментарий!