与微博内容分析相关的正则表达式

在分析微博内容时,常常需要进行特殊内容去除与抽取,例如抽取微博话题、微博昵称、微博表情、微博短链接、网址长链接等等。本文依据实际使用情况,记录下了与微博内容分析相关的正则表达式,以便查用。

微博表情

表情是使用左右中括号包含的文本(在实际使用时,显示的是 emoji 表情,不是单纯的字符),例如:[爱心]、[微笑]、[笑哭],分别表示::heart:、❤️、:smile:、😊、:joy:、😂

参考:emoji 百科

如果在微博内容中抽取表情,使用正则表达式(1-7 个字符,中文和字母,不排除有的新的表情出现,导致字符更长):

1
\[[\u4e00-\u9fa5A-Za-z]{1,7}\]

不同字符长度的表情举例(我用了 10 分钟把微博表情全部浏览了一遍,发现 [小黄人] 系列、[文明遛狗] 是最近刚刚发布出来的):[耶]、[来]、[跪了]、[ok]、[中国赞]、[紫金草]、[doge]、[文明遛狗]、[给你小心心]、[小黄人微笑]、[弗莱见钱眼开]、[小黄人剪刀手]、[哆啦 A 梦害怕]、[带着微博去旅行]。

注意,在 2019 年 3 月 21 日,发现微博新增了表情:[大侦探皮卡丘微笑],这个表情有 8 个字符,所以表情的正则表达式也要做相应的更新。

1
\[[\u4e00-\u9fa5A-Za-z]{1,8}\]

微博昵称

微博昵称是用户填写的昵称,并且在转发或者提到时,会增加 @ 前缀,例如有一个 playpi 微博用户,在实际微博内容中,会以 @playpi 的形式出现,当然,微博昵称的可用字符是有限制的,不是任意字符都行,长度也是有限制的,最少 4 个字符,最多 30 个字符。
微博昵称字符限制

以及微博客服的回答:微博客服微博

但是这个规则是针对修改昵称的限制,如果有些帐号是以前注册的,并且昵称在微博官方限制以前没有修改过,那么就有可能是 2 个字符,3 个字符,例如各个明星、作家、自媒体的个人微博:@阑夕、@王力宏、@韩寒 等等。

如果在微博内容中抽取昵称,使用正则表达式(中文、数字、字母、横线、下划线的组合,2-30 个字符):

1
@[\u4e00-\u9fa5A-Z0-9a-z_-]{2,30}

微博话题

话题是微博定义的一种概念,可以用来标识热门事件、重大新闻、明星、综艺节目等等,发布规则就是使用 2 个 #符号包含话题内容(例如:# 创造 101#),话题即生成,微博还专门有一个实时话题榜单。
微博话题榜

如果在微博内容中抽取话题,使用正则表达式(2 个 #号之间,非指定的符号,长度在 1-49 之间):

1
#[^@<>#"&'\r\n\t]{1,49}#

注意,我找到 2014 年的 一篇旧帖子 ,微博小秘书评论说话题不能包含指定的几个特殊字符,还有内容长度限制,但是我在微博页面试了一下,这些特殊字符都可以使用(但是生成的话题页面,< 字符、> 字符被转成了 html 字符实体,换行符后的内容被截断,@符号、’ 单引号、” 双引号被自动替换掉,# 符号根本无法发布,空格符可以正常使用),而且长度限制是 1-49 个字符(中英文、标点都算 1 个字符)。但是为了话题内容的传播,还是使用通俗易懂的中文或者字母比较好。

话题测试发布

话题测试结果

微博短链接

微博短链接是微博官方提供的网址压缩功能产生的一种只包含少量字符的短网址,例如:http://finance.sina.com.cn ,压缩后为:http://t.cn/RnM1Uti 。这样的话,发微博时链接占用更少的字符长度。如果发微博时,内容中带了链接,例如视频地址、淘宝店地址,会被自动压缩为短链接。微博短链接可以直接在浏览器中访问,会被微博的网址解析服务器转换为原来的正常链接再访问。

如果在微博内容中抽取短链接,使用正则表达式(我这里只是抽取 t.cn 域名的,6-8 个字母、数字):

1
#https{0,1}://t.cn/[A-Z0-9a-z]{6,8}[/]{0,1}#

参考:
微博开放平台说明:http://open.weibo.com/wiki/2/short_url/shorten
免费在线短链接转换工具:http://dwz.wailian.work

网址长链接

网址长链接也就是普通的网址,有多种可能性。

如果在微博内容中抽取网址长链接,使用正则表达式(我这里只考虑 http、https、ftp、file 协议):

1
(https?|ftp|file)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]

虾丸派 wechat
扫一扫添加博主,进技术交流群,共同学习进步
永不止步
0%