美文网首页
iOS开发-新浪微博-正则表达式

iOS开发-新浪微博-正则表达式

作者: 中峰 | 来源:发表于2016-08-09 15:31 被阅读888次

最近自己在做新浪微博,需要检索并高亮显示部分文字:
(#话题#、@用户名、链接、表情)
查来查去,应该使用“正则表达式”
研究了几天,得出了新浪微博的正则表达式如下:

#话题#######
#话题#的正则表达式
@用户名

@"@[\u4e00-\u9fa5a-zA-Z0-9_-]{2,30}"

链接
链接URL的正则表达式
表情

@"(\[[0-9a-zA-Z\u4e00-\u9fa5]+\])"

在iOS中如何使用?

1、可将匹配字符串的代码写到NSString的分类(Category)中

匹配新浪微博正文的正则表达式(放在了分类中了).png

2、在需要使用该匹配处理的地方,包含分类的.h文件,使用该对象方法即可(也可写为类方法,不过类方法需要再添个参数以传入源字符串。这写为对象方法,源字符串就可直接调用该方法,其中的self就是调用该方法的那个源字符串对象)

效果

Simulator Screen Shot 2016年8月9日 下午6.46.53.png
Simulator Screen Shot 2016年8月9日 下午6.50.26.png

注:

匹配粗体中括号间的内容(也带上两边的粗体中括号):
粗体中括号及其中间内容的正则表达式.png
匹配粗体中括号间的内容(不带两边的粗体中括号)
只匹配粗体中括号之间的内容(不带两边的粗体中括号)的正则表达式.png
匹配书名号之间的内容(不带两边的书名号)
匹配书名号之间的内容(不带两边的书名号.png
解释:

(?<=xxx)是以xxx开头的字符串, 但不包含xxx本身。
(?=xxx)就匹配以xxx结尾的字符串, 但不包含xxx本身。

(?<=《)即以《开头, 但不包含《
(?=》)即以》结尾,但不包含》


即匹配非》的字符,将其写在(?<=《)和(?=》)之间,就表示,匹配以《开头(但不包含《),以》结尾(但不包含》)的非》字符串。

效果
只匹配粗体中括号和书名号之间的内容.png

相关文章

网友评论

      本文标题:iOS开发-新浪微博-正则表达式

      本文链接:https://www.haomeiwen.com/subject/vcrdsttx.html