Совпадение не найдено. Спасибо!
import re
re_tag = re.compile(r"</.?>")
text = r"</\\\\>"
match = re_tag.search(text)
print(match)
Возможно, вы путаете ? с *? r'</.*>' будет соответствовать, среди прочего, произвольным закрывающим тегам. (Или, возможно, *?, который будет выполнять нежадное сопоставление, чтобы избежать ложных срабатываний.)
Да, я разбираю HTML вручную. Причина в том, что моя основная цель - извлечь текст. Я попробовал BeautifulSoup, который, к сожалению, не сохраняет макет страницы. Мне приходится вручную добавлять разрывы строк.
Потому что в необработанном синтаксисе я считаю, что r"\\\\" - это 4 обратных слэша на уровне синтаксического анализа источника. Где движок регулярных выражений будет искать 2 обратных слэша, по одному для каждого \\






Ваша строка text содержит 4 символа обратной косой черты. Ваше регулярное выражение допускает только один необязательный символ между / и >. Например, будет соответствует 4-символьной строке, созданной r"</\>" или "</\\>".
Да, это должно было быть r"</.*?>".
Вы должны изменить свое выражение на что-то вроде этого (абсолютно я не знаю, что именно вы хотите проверить своим регулярным выражением):
re_tag = re.compile(r"</.{0,4}>")
Всего от 4 до 4 любых символов
Или вот так:
re_tag = re.compile(r"<.*>")
Если вы хотите получить любую длину чего-либо
Да, это помогает. Спасибо!
Если вы собираетесь использовать регулярное выражение для анализа XML или HTML, не делайте этого. Используйте правильный парсер для языков разметки.