Python регулягка(все значения)

Тема в разделе "Perl, Python, Ruby", создана пользователем TrastMan, 20 дек 2011.

  1. TrastMan

    TrastMan Постоялец

    Регистр.:
    13 ноя 2007
    Сообщения:
    117
    Симпатии:
    4
    print re.compile("(регулярка)", text).group(0) выдает только одно найденное значение, а их несколько. как вывести список?
     
  2. mcdir

    mcdir

    Регистр.:
    6 ноя 2007
    Сообщения:
    202
    Симпатии:
    37
    Код:
    >>> m = re.match(r"(\w+) (\w+)", "Isaac Newton, physicist")
    >>> m.group(0)      # The entire match
    'Isaac Newton'
    >>> m.group(1)      # The first parenthesized subgroup.
    'Isaac'
    >>> m.group(2)      # The second parenthesized subgroup.
    'Newton'
    >>> m.group(1, 2)    # Multiple arguments give us a tuple.
    ('Isaac', 'Newton')
    http://docs.python.org/library/re.html
    все просто )
     
  3. ShoxMaster

    ShoxMaster

    Регистр.:
    3 дек 2008
    Сообщения:
    393
    Симпатии:
    150
    Лучше уж так:
    Код:
    import re
    m = re.match(r"(\w+) (\w+)", "Isaac Newton, physicist")
    for a in m.groups():
          print(a)
    
     
  4. TrastMan

    TrastMan Постоялец

    Регистр.:
    13 ноя 2007
    Сообщения:
    117
    Симпатии:
    4
    Да я пробовал так и еще несколько вариантов...
    Вот это получается:
    Код:
    TypeError: match() takes at least 2 arguments (1 given)
     
  5. ShoxMaster

    ShoxMaster

    Регистр.:
    3 дек 2008
    Сообщения:
    393
    Симпатии:
    150
    :mad: А перевести? Метод match принимает два аргумента: шаблон регулярки и строку. Примеры, что выше - рабочие. И кстати, когда не работает - нужно слать код, а не ошибки.
     
  6. TrastMan

    TrastMan Постоялец

    Регистр.:
    13 ноя 2007
    Сообщения:
    117
    Симпатии:
    4
    Ага, перевел. Практически сразу. Это не помогло.

    В общем решается:
    Код:
    
    g = Grab()
    g.go('domain')
    rex = re.compile(r'регулярка')
    for значение in rex.findall(тело):
        print значение
    Ну я и запарился с этим...(
    Чуть посложнее парсер и можно мозг сломать на мелочах.
     
    Ultharas нравится это.
  7. errogaht

    errogaht Постоялец

    Регистр.:
    15 май 2013
    Сообщения:
    50
    Симпатии:
    10
    RegExBuddy RegExMagic - крутые утилиты для регулярок, там выадает на выходе готовые функции для разных языков, есть и питон
     
  8. Ultharas

    Ultharas Создатель

    Регистр.:
    26 сен 2014
    Сообщения:
    27
    Симпатии:
    10
    Почему бы не просто re.findall(regex, string) - Возвратит список