Regex для имени пользователя Twitter
Не могли бы вы предоставить регулярное выражение, которое соответствует именам пользователей Twitter?
Дополнительный бонус, если представлен пример Python.
Ответы
Ответ 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, очевидно, также делает). Исключает адреса электронной почты.