Регулярное выражение получает значение между <> - PullRequest
0 голосов
/ 11 октября 2019

Уже некоторое время пытаюсь, но не могу понять, что правильно с RE в python.

Я получаю это как return

Kinepolis Ticket <info@domain.com>

, однако я хотел бы сохранитьимя и адрес электронной почты в отдельных переменных. Таким образом, результат будет:

name = Kinepolis Ticket  
email = info@domain.com

Ответы [ 2 ]

2 голосов
/ 11 октября 2019

Вы можете использовать

import re
string = "Kinepolis Ticket <info@domain.com>"

rx = re.compile(r'([^<>]+)\s<([^<>]+)>')
m = rx.search(string)
if m:
    name, email = m.groups()
    print(name, email)


Или - начиная с Python 3.8:
import re
string = "Kinepolis Ticket <info@domain.com>"

if (m := re.search(r'([^<>]+)\s<([^<>]+)>', string)):
    # ^^^ walrus
    name, email = m.groups()
    print(name, email)
1 голос
/ 11 октября 2019
>>> import re
>>> m = re.match('([^<>]*)<([^<>]*)>','Kinepolis Ticket <info@domain.com>')
>>> name = m.group(1).strip()
>>> email = m.group(2).strip()
>>> print("name={},email={}".format(name,email))
name=Kinepolis Ticket,email=info@domain.com
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...