[Objective-C] 纯文本查看 复制代码
override func viewDidLoad() {
super.viewDidLoad()
let string = "<a href=\"http://app.weibo.com/t/feed/3auC5p\" rel=\"nofollow\">皮皮时光机</a>"
//pattern - 匹配方案 -正则表达式 "" 需要\转义
//索引:
// 0 和匹配方案完全一致的字符串
// 1 第一个()中的内容
// 2 第二个()中的内容
// 索引从左往右顺序递增
// 对于模糊匹配,如果关心的内容,就可以使用(.*?) 通过索引获取结果
// 若不关系内容 使用 .*? 匹配任意内容
let pattern = "<a href=\"(.*?)\" rel=\".*?>(.*?)</a>"
//创建正则表达式,如果pattern失败,抛出异常
guard let regx = try? NSRegularExpression(pattern: pattern, options: []) else {
return
}
//进行查找,两种查找方法:只找一个匹配项/查找多个匹配项
guard let result = regx.firstMatch(in: string, options: [], range: NSRange(location: 0, length: string.characters.count)) else {
print("没有找到匹配项")
return
}
//result.numberOfRanges ->查找到的范围数量
//result.rangeAt(idx) ->指定索引位置的范围
print("找到的数量\(result.numberOfRanges)")
for idx in 0..<result.numberOfRanges {
let r = result.rangeAt(idx)
let subStr = (string as NSString).substring(with: r)
print("\(idx)---\(subStr)")
}
}
[Objective-C] 纯文本查看 复制代码
extension String {
/// 从当前的字符串中,提取链接和文本
/// Swift中提供了’元祖‘,同时返回多个值
/// OC 中可以返回字典,或者自定义对象,也可以用指针的指针
func yw_href() -> ((link: String, text: String))? {
//匹配方案
let pattern = "<a href=\"(.*?)\".*?>(.*?)</a>"
// 创建正则表达式
guard let regx = try? NSRegularExpression(pattern: pattern, options: []),
let result = regx.firstMatch(in: self, options: [], range: NSRange(location: 0, length: characters.count))else {
return nil
}
//获取结果
let link = (self as NSString).substring(with: result.rangeAt(1))
let text = (self as NSString).substring(with: result.rangeAt(2))
return(link,text)
}
}