@nano_e_t_4

Объясните регулярное выражение?

Всем привет
Нашел такое вот регулярное выражение, никак не могу его толком разобрать:
string = '<p style="margin-left:10px;">text<b class="super-bold">bold text</b>.<p>'
pattern = '<[^>]+>'
result = re.findall(pattern,string)
print result
['<p style="margin-left:10px;">', '<b class="super-bold">', '</b>', '</p>']

Непонятен тот момент, почему в result попадает символ ">"
Спасибо
  • Вопрос задан
  • 278 просмотров
Решения вопроса 1
yarkov
@yarkov
Помог ответ? Отметь решением.
pattern = '<[^>]+>'
# выражение означает строку между символами < и >
# квантификатор + - один или более символов
# квантификатор * -  ноль или более символов
# квантификатор ? - ноль или один символ

То есть в строке
<abc def>gfh>
этой регуляркой найдется только <abc def>
>>> import re
>>> string = '<p style="margin-left:10px;">text<b class="super-bold">bold text</b>.<p>'
>>> string2 = '<abc def>gfh>'
>>> pattern = '<[^>]+>'
>>> 
>>> result = re.findall(pattern,string)
>>> print result
['<p style="margin-left:10px;">', '<b class="super-bold">', '</b>', '<p>']
>>> 
>>> result2 = re.findall(pattern,string2)
>>> print result2
['<abc def>']
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
alsopub
@alsopub
В result попадает:
1) символ < (<)
2) 1 или более любых символов отличных от > ([^>]+)
3) символ > (>)

Все это исходя из регулярки <[^>]+>
Ответ написан
Комментировать
@abcd0x00
Прочитай документацию
https://docs.python.org/3/library/re.html
Ответ написан
Комментировать
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
<[^>]+>
Ответ простой: после открытия ищем всё, что внутри, пока не будет закрытия.
т.е. (это лишь пример ДЛЯ ПОНИМАНИЯ, и структура тегов здесь, конечно, не корректна):
< <dfgdg> > - будет: < <dfgdg>
или
<a sdfsd>>>>> - будет: <a sdfsd>
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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