@hagnoherze

Как правильно составить регулярку?

Есть текст
Elapsed Time:</td><td><font color="darkblue">16 days and 12:42:31</font><>
<>
<><>
<>
<>7gt757tLast Called Number:</td><td>
<font color="darkblue">67678799989@gw0</font>
</td><td>Last Caller Number:</td>
<td><font color="darkblue">876868856454</font>

Между </font> и Last Called Number: может быть любой текст и любое количество переносов строки (/n). Ожидаемый результат:
16 days and 12:42:31
67678799989
876868856454

Пробовал так:
Elapsed\sTime:\D+(.+?)<\/font>[\n]*.Last\sCalled\sNumber:\D+(\d{5,})@gw0<\/font>\D+(\d{5,})<\/font>

Не работает.
  • Вопрос задан
  • 126 просмотров
Решения вопроса 1
@hagnoherze Автор вопроса
Elapsed\sTime.*?<font.*?>(.*?)<\/font>(.|\r|\n)+Last\sCalled\sNumber:.*<font.*>(.*?)\@.*?<\/font>.*?<font.*?>(.*?)<\/font>(.|\r|\n)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
https://regex101.com/r/aWofwq/1
или еще более геноцидный вариант
https://regex101.com/r/5URmVz/1
вот я переключаю синтаксис и сразу вижу в чем проблема, неужели это так сложно.
Ответ написан
@kudis
Bitrix developer
Всё должно работать:
import re

str = '''
<>
<><>
<>
<>7gt757tLast Called Number:</td><td>
<>
<><>
<>
<>7gt757tLast Called Number:</td><td>
Elapsed Time:</td><td><font color="darkblue">16 days and 12:42:31</font><>
<>
<><>
<>
<>7gt757tLast Called Number:</td><td>
<font color="darkblue">67678799989@gw0</font>
</td><td>Last Caller Number:</td>
<td><font color="darkblue">876868856454</font>
<>
<><>
<>
<>7gt757tLast Called Number:</td><td>
<>
<><>
<>
'''

result = re.findall(r'<font color=\"darkblue\">(.*?)</font>', str)
print('\n'.join(result))

Вывод:
b4c598beb13c:python -u /opt/project/habr_regex.py
16 days and 12:42:31
67678799989@gw0
876868856454

Process finished with exit code 0
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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