最近自己在做新浪微博,需要检索并高亮显示部分文字:
(#话题#、@用户名、链接、表情)
查来查去,应该使用“正则表达式”
研究了几天,得出了新浪微博的正则表达式如下:
#话题#######
@用户名
@"@[\u4e00-\u9fa5a-zA-Z0-9_-]{2,30}"
链接
表情
@"(\[[0-9a-zA-Z\u4e00-\u9fa5]+\])"
在iOS中如何使用?
1、可将匹配字符串的代码写到NSString的分类(Category)中
2、在需要使用该匹配处理的地方,包含分类的.h文件,使用该对象方法即可(也可写为类方法,不过类方法需要再添个参数以传入源字符串。这写为对象方法,源字符串就可直接调用该方法,其中的self就是调用该方法的那个源字符串对象)
效果
注:
匹配粗体中括号间的内容(也带上两边的粗体中括号):
匹配粗体中括号间的内容(不带两边的粗体中括号)
匹配书名号之间的内容(不带两边的书名号)
解释:
(?<=xxx)是以xxx开头的字符串, 但不包含xxx本身。
(?=xxx)就匹配以xxx结尾的字符串, 但不包含xxx本身。
(?<=《)即以《开头, 但不包含《
(?=》)即以》结尾,但不包含》
即匹配非》的字符,将其写在(?<=《)和(?=》)之间,就表示,匹配以《开头(但不包含《),以》结尾(但不包含》)的非》字符串。