正则表达式
在iOS ,写一个正则表达式主要包括三个步骤:
1.创建匹配规则
let patternew = "@.*?:"
2.创建正则表达式对象
guard let regexs = try? NSRegularExpression(pattern: patternew, options: []) else{
return
}
3.开始匹配
let results = regexs.matches(in: statusText, options: [], range: NSRange(location: 0, length: statusText.count))
4.获取匹配对象
for result in results {
print(result.range)
print((statusText as NSString).substring(with: result.range))
}
然后来记录一下简单的匹配规则。
1.一般简单的匹配连续的字符串
let pattern = "abc"
2.若将某个字符串中不连续的也要匹配出来
let pattern1 = "[abc]"
3.第一个是字母,第二个是数字
let pattern3 = "[a-z][0-9]"
4.^ 指的是判断首字母。例子:首字母必须是字母,并且后面跟两个数字
let pattern4 = "^[a-z]\\d\\d"
5.数字位数的判断用{},如果可以有多位,用逗号分隔。上面例子的另一种写法:
let pattern5 = "^[a-z]\\d{2}"
6.用什么结尾,用 $.例子:以字母结尾:
let pattern7 = "[a-z]$"
7.不能用^ .例子:首字母不能是字母:
let pattern8 = "^[^0-9]"
8.判断是否为qq号码的一个简单正则。1.必须是数字开头,2.第一位不能为0 3.qq 一般为5位-11位,所以判断完第一位以后,后面还有4-10位
let pattenqq = "^[1-9]\\d{4,10}$"
9.在正则中 .代表任意字符,*代表0-n位,
10例子:微博中需要匹配出@,#,还有表情,以如下为例子讲解。
let statusText = "@yananan:【动物尖叫合辑】#哈哈哈哈#猫头鹰这么尖叫[偷笑]、@liwuy: 老鼠这么尖叫、兔子这么尖叫[吃惊]、@wyjsn: 莫名奇#小笼包#妙的笑到最后[好爱哦]!~ http://t.cn/zYBuKZ8/"
10.1匹配出@的用户名。分析:@后面是任意位数的字符,然后是 : 不过这个找到这个冒号后,结束这个匹配,查找下一个,添加 ?就是为了防止直接找到最后一个:
let pattern = "@.*?:"
10.2匹配话题
let pattern = "#.*?#"
10.3匹配表情
let pattern = "\\[.*?\\]"