Регулярное выражение для идентификации имен пользователей Reddit

115
13

Я делаю бота с возможностью не публиковать, если имя пользователя не является определенным пользователем.

Reddit имена пользователей могут содержать буквы в обоих случаях и иметь номера.

Какое регулярное выражение можно использовать для идентификации такого имени пользователя? Формат is /u/USERNAME где имя пользователя может иметь буквы обоих случаев и номеров, например ExaMp13.

Я пробовал /u/[AZ][az][0-9]

спросил(а) 2017-09-07T23:30:00+03:00 3 года, 7 месяцев назад
1
Решение
86

Допустимым символам для имен пользователей Reddit предшествует /u/ и включают:

    ВЕРХНИЙ РЕГИСТР в нижнем регистре Digits Нижнее подчеркивание Дефис

Это регулярное выражение отвечает этим критериям:

/u/[A-Za-z0-9_-]+

ответил(а) 2017-09-07T23:36:00+03:00 3 года, 7 месяцев назад
75

Вы можете использовать регулярное выражение следующим образом:

/u/\w+

ответил(а) 2017-09-07T23:44:00+03:00 3 года, 7 месяцев назад
76

краткое

Благодарим вас за то, что вы обновили свой пост тем, что вы пробовали, так как это дает нам представление о том, что вы, возможно, не понимаете (и помогает нам объяснить, где вы поступили неправильно и как это исправить).

Ваше регулярное выражение не работает, потому что оно проверяет [AZ] а затем [az], затем на [0-9]. Таким образом, ваше регулярное выражение будет соответствовать только как Be1

Ответ

Вместо этого вы должны попробовать [a-zA-Z0-9] или \w и указать квантификатор, такой как + (один или несколько).

Для вашей конкретной проблемы вы должны использовать \/u\/(\w+) (или /u/(\w+) поскольку python не заботится об экранировании). Это позволит вам проверить первую группу захвата на список пользователей, для которых вы не хотите публиковать сообщения.

Эти регулярные выражения гарантируют, что он соответствует /u/ за которым следует любой символ слова [a-zA-Z0-9_] между 1 и неограниченным временем.

См. Рабочий пример здесь

ответил(а) 2017-09-07T23:42:00+03:00 3 года, 7 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема