正则表达式 :最大的用途就是用来匹配字符串,进行模糊查询。正则表达式不是OC特有的,也不是Swift特有的,几乎所有的语言都支持正则表达式;
. 匹配任意字符,回车除外;
*匹配任意多次;
?尽量少的匹配;
以下是自己测试的小例子:
private func regxTest() {
// 目标:取出href中的链接,以及文本描述
let str = "<a href=\"https://www.baidu.com/\" rel=\"nofollow\">百度一下,你就知道</a>"
// 创建正则表达式
/**
pattern - 常说的正则表达式,就是pattern的写法[匹配方案]
索引
0: 和匹配方案完全一致的字符串
1: 第一个 () 中的内容
2: 第二个 () 中的内容
...... 索引从左向右顺序递增
*/
/**
对于模糊匹配
如果关心的内容,就是用 (.*?),然后通过索引可以获取结果
如果不关心的内容,就是 .*? ,可以匹配任意的内容
*/
let pattern = "<a href=\"(.*?)\".*?>(.*?)</a>"
// 创建正则表达式,如果pattern失败,抛出异常
guard let regx = try? NSRegularExpression(pattern: pattern, options: []) else {
return
}
// 进行查找,两种查找方法 - [只找第一个匹配项 / 查找多个匹配项]
guard let result = regx.firstMatch(in: str, options: [], range: NSRange(location: 0, length: str.characters.count)) else { return }
/**
result中只有两个重要的方法
result.numberOfRanges -> 查找到的范围
result.rangeAt(idx) -> 指定'索引'位置的范围
*/
print("找到的数量\(result.numberOfRanges)")
for idx in 0..<result.numberOfRanges {
let r = result.rangeAt(idx)
let subStr = (str as NSString).substring(with: r)
print("\(idx) - \(subStr)")
}
}
推荐下正则表达式深度快速学习的网站:https://deerchao.net/tutorials/regex/regex.htm
常用的正则表达式大全网站:http://www.cnblogs.com/zxin/archive/2013/01/26/2877765.html
网友评论