Небольшая помощь по регуляркам на петоне

Тема в разделе "WASM.ZEN", создана пользователем nullPtr, 9 дек 2020.

  1. nullPtr

    nullPtr Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2020
    Сообщения:
    138
    Почитал регулярки - ничего не понял

    Один чел как-то помог, но не до конца.
    Тут есть те, кто за регулярки шарит?

    <file dir="Data" filename="LOL">TEXT<file>

    нужно достать данные Data, LOL и TEXT

    с первыми двумя работает след регулярка - "<file dir=\"(.*?)\" filename=\"(.*?)\">" - на выходе [('Data', 'LOL')]

    Но как доработать, чтоб и TEXT брал?

    p.s. на петоне со стандартным импортом re
     
  2. Aiks

    Aiks Member

    Публикаций:
    0
    Регистрация:
    16 апр 2017
    Сообщения:
    109
    Адрес:
    Украина
    <file dir=\"(.*?)\" filename=\"(.*?)\">(.*?)<file>
     
  3. nullPtr

    nullPtr Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2020
    Сообщения:
    138
    да, пробовал, не помогает
    При таком раскладе вообще ничего не возвращает
     
  4. Aiks

    Aiks Member

    Публикаций:
    0
    Регистрация:
    16 апр 2017
    Сообщения:
    109
    Адрес:
    Украина
  5. nullPtr

    nullPtr Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2020
    Сообщения:
    138
    ага, у меня тоже кста

    Я короче, сделал так <file> TEXT <file>

    регулярку взял как "<file>(.*?)<file>"

    все равно не работает именно на петоне. Мб у него другая система? Хотя хз

    TEXT кста имеет оч большую длину еслчо. Не из-за этого ли?
     
  6. Aiks

    Aiks Member

    Публикаций:
    0
    Регистрация:
    16 апр 2017
    Сообщения:
    109
    Адрес:
    Украина
  7. nullPtr

    nullPtr Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2020
    Сообщения:
    138
    Да, но у меня Base64 где TEXT

    мб из-за этого? Не думаю

    А какая версия питона?
    --- Сообщение объединено, 9 дек 2020 ---
    понял проблему. Проблема в переносе:

    <file dir="Data" filename="LOL">TEXTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    <file>
    вот так не работает


    а так - работает:
    <file dir="Data" filename="LOL">TEXTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa<file>

    Можно ли как-то решить эту проблему? Прост в файле в основном перенос тега

    P.s. с большими данными тож не хочет работать
     
    Последнее редактирование: 9 дек 2020
  8. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.241
    Aiks нравится это.
  9. Aiks

    Aiks Member

    Публикаций:
    0
    Регистрация:
    16 апр 2017
    Сообщения:
    109
    Адрес:
    Украина
    Python 3.8.2

    Код (Text):
    1.  
    2. import re
    3. text = '''<file dir=\"Data\" filename=\"LOL\">TEXT
    4. <file>'''
    5. parser = re.findall('<file dir=\"(.*?)\" filename=\"(.*?)\">(.*?)\s?<file>', text)
    6. print(parser)
    7.  
     
    Последнее редактирование: 9 дек 2020
  10. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.241
    re.MULTILINE или re.DOTALL.
     
    nullPtr нравится это.
  11. nullPtr

    nullPtr Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2020
    Сообщения:
    138
    во, это решение братан. Благодарю Рел ;D

    у меня структура чуть другая прост, хотя хз, не пробовал. Прост сам мало играюсь с питоном...
    --- Сообщение объединено, 10 дек 2020 ---
    p.s. Рел, я крч совместил и все воркает - re.MULTILINE|re.DOTALL