实现微博中的‘@用户名’和‘#话题#’的正则表达式

本文介绍了如何使用正则表达式来匹配微博中的用户名和话题标签。对于用户名,提供了多种匹配表达式,包括考虑不同结束符号的情况以及符合新浪微博规定的用户名格式。对于话题标签,则给出了简单的匹配方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【一】匹配 @用户名 
首先分析下微博中从哪里开始到哪里结束才是一个完整的用户名,按照常规的表现形式,一般是以@开头,以:结尾,中间为用户的名称。 
匹配表达式就可写为: @[^::]+ 
这是简单的写法,但是有些是在微博之后再@的,还有就是连续@的情况,还有些是以逗号等结束的,因此完善一下 
修改为: @[^,,::\s@]+ 
但是这些匹配都是从形式上进行了一个大概的归类,但是为了更为严谨,就要彻底分析其用户名的具体格式,例如新浪微博中的用户名格式为是“4-30个字符,支持英文、数字、"_"或减号” 
,也就是说,支持中文、字母、数字、下划线及减号,并且是4到30个字符(这里暂且认为汉字为一个字符)那么在写匹配的表达式的时候就可以这么来写: 
@[\u4e00-\u9fa5a-zA-Z0-9_-]{4,30} 
转换为php可用正则:
preg_match_all('/@([\\x{4e00}-\\x{9fa5}a-zA-Z0-9-_]{2,30})+/u', $content, $matches)
若需要带小数点:
'/@([\\x{4e00}-\\x{9fa5}a-zA-Z0-9-_\.]{2,30})+/u' 【二】匹配 #话题# 这个相对相对就简单了很多,前后都是#,以#号开始并以#结束 匹配表达式写为: #[
^#]+#

 

转载于:https://www.cnblogs.com/ygcool/p/8717391.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值