roomONmoon
@roomONmoon

Исключить строку если она оканчивается как _bot?

Подскажите пожалуйста, как исключить всю строку, если она оканчивается как _bot?

Моё регулярное выражение:
@(?:t|tg|telegram)(?:\.|:/)(?:me|dog|)/(?:\+|joinchat/|join\?invite=)?([\w-]+)@gm

Пример:
t.me/+TuxVLdSmj1RiMTEy
t.me/joinchat/TuxVLdSmj1RiMTEy (legacy)
tg://join?invite=TuxVLdSmj1RiMTEy
telegram.me/+TuxVLdSmj1RiMTEy
https://t.me/test_bot

Ссылка на regex101: https://regex101.com/r/fzhK9y/1
  • Вопрос задан
  • 35 просмотров
Решения вопроса 1
roomONmoon
@roomONmoon Автор вопроса
Чтобы исключить строку, если в ней есть вхождение "_bot", нужно добавить отрицательное lookahead утверждение перед тем, как захватывать часть строки. Вот обновленное регулярное выражение:

@(?:t|tg|telegram)(?:\.|:/)(?:me|dog|)/(?:\+|joinchat/|join\?invite=)?(?!. * _bot)([\w-]+)@gm

Объяснение изменений:
- Добавлен блок (?!. * _bot) перед захватом части строки в группу. Этот блок является негативным lookahead утверждением, которое означает "не может быть истинным, что после текущего положения в строке следует '_bot'". Таким образом, если '_bot' присутствует в строке, то весь блок не может быть совпадением, и группа не будет захвачена.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы