Подтвердить что ты не робот

Regex для имени пользователя Twitter

Не могли бы вы предоставить регулярное выражение, которое соответствует именам пользователей Twitter?

Дополнительный бонус, если представлен пример Python.

4b9b3361

Ответ 1

(?<=^|(?<=[^a-zA-Z0-9-_\.]))@([A-Za-z]+[A-Za-z0-9]+)

Я использовал это, поскольку он игнорирует электронные письма

Вот пример твита

@Hello how are @you doing, email @000 me @ [email protected] @shahmirj

Выбор:

@Hello
@you
@shahmirj

Он также будет работать для хэш-тегов, я использую то же выражение с @, измененным на #

У меня есть запись в блоге, в которой я постоянно обновляю свой @http://shahmirj.com/blog/extracting-twitter-usertags-using-regex, не забудьте сравнить это просто, я нашел ошибка: D

Правильно я просто пробрался туда: D

Ответ 2

Если вы говорите о @username, которую они используют в твиттере, вы можете использовать это:

import re
twitter_username_re = re.compile(r'@([A-Za-z0-9_]+)')

Чтобы сделать каждый экземпляр HTML-ссылкой, вы можете сделать что-то вроде этого:

my_html_str = twitter_username_re.sub(lambda m: '<a href="http://twitter.com/%s">%s</a>' % (m.group(1), m.group(0)), my_tweet)

Ответ 3

Я использую регулярное выражение и проверено в нескольких контекстах:

/(^|[^@\w])@(\w{1,15})\b/

Это самый чистый способ, который я нашел, чтобы проверить и заменить имя пользователя Twitter в строках.

#!/usr/bin/python

import re

text = "@RayFranco is answering to @jjconti, this is a real '@username83' but this is [email protected], and this is a @probablyfaketwitterusername";

ftext = re.sub( r'(^|[^@\w])@(\w{1,15})\b', '\\1<a href="http://twitter.com/\\2">\\2</a>', text )

print ftext;

Это вернет меня, как ожидалось:

<a href="http://twitter.com/RayFranco">RayFranco</a> is answering to <a href="http://twitter.com/jjconti">jjconti</a>, this is a real '<a href="http://twitter.com/username83">username83</a>' but this is [email protected], and this is a @probablyfaketwitterusername

На основе Специфика Twitter:

Ваше имя пользователя не может быть длиннее 15 символов. Ваше настоящее имя может быть длиннее (20 символов), но имена пользователей сохраняются короче для удобства. Имя пользователя может содержать только буквенно-цифровые символы (буквы A-Z, цифры 0-9), за исключением подчеркивания, как указано выше. Убедитесь, что ваше желаемое имя пользователя не содержит символов, тире или пробелов.

Ответ 4

Twitter недавно выпущен в с открытым исходным кодом в различные языки, включая Java, Ruby (gem) и реализации Javascript кода, который они используют для поиска имен пользователей, хэш-тегов, списков и URL-адресов.

Это очень регулярное выражение, ориентированное.

Ответ 5

Единственными символами, принятыми в форме, являются A-Z, 0-9 и подчеркивание. Имена пользователей не чувствительны к регистру, поэтому вы можете использовать r'@(?i)[a-z0-9_]+', чтобы все правильно совместить, а также различать пользователей.

Ответ 6

Короче, /@([\w]+)/ работает нормально.

Ответ 7

Это метод, который я использовал в проекте, который принимает текстовый атрибут объекта tweet и возвращает текст как с hashtags, так и с user_mentions, связанными с соответствующими страницами в twitter, в соответствии с последними рекомендациями по отображению твиттера.

def link_tweet(tweet):
"""
This method takes the text attribute from a tweet object and returns it with
user_mentions and hashtags linked
"""
tweet = re.sub(r'(\A|\s)@(\w+)', r'\[email protected]<a href="http://www.twitter.com/\2">\2</a>', str(tweet))
return re.sub(r'(\A|\s)#(\w+)', r'\1#<a href="http://search.twitter.com/search?q=%23\2">\2</a>', str(tweet))

Как только вы вызываете этот метод, вы можете передать параметр my_tweet [x].text. Надеюсь, что это будет полезно.

Ответ 8

Это регулярное выражение, похоже, разрешает имена пользователей Twitter:

^@[A-Za-z0-9_]{1,15}$

Максимум 15 символов, позволяет подчеркивать непосредственно после @(что делает Twitter) и позволяет все подчеркивания (которые после быстрого поиска я обнаружил, что Twitter, очевидно, также делает). Исключает адреса электронной почты.