Python регулярные выражения, выдернуть нужные слова в list
Есть такой текст
srt = "
<p><strong>Услуга:</strong> orders.Orders.service</p>
Название - orders.Orders.123name<br>
Заказ номер orders.Orders.id
"
как написать регулярное выражение, чтобы из текста выдернуть все слова name1.name2.name3
то есть на выходе list = ['orders.Orders.service', 'orders.Orders.123name', 'orders.Orders.id'] итд
Ответы (3 шт):
Автор решения: A_Vaclav
→ Ссылка
Вот рабочий код на основе комментария ClickName
import re
def q_1320348(s):
return re.findall(r'[a-zA-Z0-9]+\.[a-zA-Z0-9]+\.[a-zA-Z0-9]+', s)
s = "<p><strong>Услуга:</strong> orders.Orders.service</p>Название -\
orders.Orders.123name<br>Заказ номер orders.Orders.id"
print(q_1320348(s))
Автор решения: Andy Pavlov
→ Ссылка
Еще вариант использовать re.finditer. В этом случае можно варьировать количеством искомых групп атрибутов.
import re
srt = """
<p><strong>Услуга:</strong> orders.Orders.service</p>
Название - orders.Orders.123name<br>
Заказ номер orders.Orders.id
orders.Orders2
"""
finds = [f.group(0) for f in re.finditer('(\w+(\.\w+){2})', srt)]
# Фильтрует только последовательность attr_1.attr_2.attr_3.
# Вариант attr_1.attr_2 будет отброшен
или
finds = [f.group(0) for f in re.finditer('(\w+(\.\w+)+)', srt)]
# Фильтрует любую последовательность attr_1.attr_2...attr_n
Автор решения: A_Vaclav
→ Ссылка
import re
def q_1320348(s):
return re.findall(r'[a-zA-Z0-9]+\.[a-zA-Z0-9]+\.[a-zA-Z0-9_]+', s)
s = "<p><strong>Услуга:</strong> orders.Orders.service_id</p>Название -\
orders.Orders.123name<br>Заказ номер orders.Orders.id"
print(q_1320348(s))