Regex: как разбирать запятую, повторяющуюся группу? [Дубликат]

Это означает, что вы пытаетесь манипулировать тем, что имеет ссылку, но еще не инициализировано. Первое, что нужно сделать, это проверить каждый созданный экземпляр. Используйте контрольные точки, часы, проверяйте свои значения varibale. Следить за трассировкой стека и искать точные строки и столбцы, которые создают проблему

18
задан yasar 19 March 2012 в 06:09
поделиться

3 ответа

Это будет работать:

>>> regexp = r"[\w\.]+@(\w+)(\.\w+)?(\.\w+)?(\.\w+)?(\.\w+)?(\.\w+)?"
>>> email_address = "william.adama@galactica.caprica.fleet.mil"
>>> m = re.match(regexp, email_address)
>>> m.groups()
('galactica', '.caprica', '.fleet', '.mil', None, None)

Но оно ограничено максимум шестью подгруппами. Лучшим способом сделать это будет:

>>> m = re.match(r"[\w\.]+@(.+)", email_address)
>>> m.groups()
('galactica.caprica.fleet.mil',)
>>> m.group(1).split('.')
['galactica', 'caprica', 'fleet', 'mil']

Обратите внимание, что регулярные выражения в порядке, если адреса электронной почты просты - но есть все, что может сломаться. См. этот вопрос для подробного рассмотрения регулярных выражений адреса электронной почты.

21
ответ дан Community 27 August 2018 в 15:45
поделиться

Вы можете исправить проблему (\.\w+)+ только для захвата последнего совпадения, сделав это вместо этого: ((?:\.\w+)+)

4
ответ дан Taymon 27 August 2018 в 15:45
поделиться

Это то, что вы ищете:

>>> import re

>>> s="yasar@webmail.something.edu.tr"
>>> r=re.compile("\.\w+")
>>> m=r.findall(s)

>>> m
['.something', '.edu', '.tr']
2
ответ дан Tushar Vazirani 27 August 2018 в 15:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: