diff --git a/formatter.py b/formatter.py index 7af08b7..0dc1d4d 100644 --- a/formatter.py +++ b/formatter.py @@ -25,15 +25,27 @@ def replace_vk_links(text): Заменяет ссылки на сообщества ВК в форматах: [club123|Название сообщества] -> Название сообщества [id456|Имя пользователя] -> Имя пользователя + [url|текст] -> текст (для Telegram) """ if not text: return text - # Регулярное выражение для поиска ссылок формата [типID|Текст] - pattern = r'\[(?:club|id)\d+\|([^\]]+)\]' + # Сначала обрабатываем ссылки формата [url|текст] и преобразуем их в HTML-ссылки + def replace_url_link(match): + url = match.group(1) + link_text = match.group(2) + return f'{link_text}' + + # Регулярное выражение для поиска ссылок формата [url|текст] + # Исключаем случаи, когда url начинается с club или id и цифр, за которыми сразу следует | (это обрабатывается отдельно) + url_pattern = r'\[(?!club\d+\||id\d+\|)([^\|]+)\|([^\]]+)\]' + text = re.sub(url_pattern, replace_url_link, text) + + # Регулярное выражение для поиска ссылок формата [типID|Текст] (ВК-специфичные) + vk_pattern = r'\[(?:club|id)\d+\|([^\]]+)\]' # Заменяем все вхождения на текст внутри ссылки - return re.sub(pattern, r'\1', text) + return re.sub(vk_pattern, r'\1', text) def remove_html_tags(text): """Удаляет HTML-теги с учетом специальной обработки

и """