• 正则表达式


    1. 介绍
        是一个独立的语言,适用于所有的开发语言,甚至编辑器
          1.匹配方案
            .   匹配任意字符,换行除外
            * 匹配任意多的字符
            ?  尽量少的匹配
           2.常用函数
             firstMatch 在指定的字符串中,查找‘第一个’和 pattern 符合字符串
             matches 在指定的字符串中,查找所有和 pattern 符合的字符串
           3.常用方法
               range(index)
               index = 0 取到所有和 pattern 匹配一直都字符串
               index = 1 取到 pattern 中(第一个) 内部的内容,依次递增
            4.pattern 的编写方法
               1> 将完整的字符串直接复制到 pattern
               2> 将需要获取的内容使用 (.*?)设置
               3> 将不关心的内容,可变的内容使用 “.*?” 过滤并且忽略,能够适应更多的数据匹配
            5.由于正则表达式适用于所有的语言,常用的正则表达式,可以直接搜索

    2. 创建分类 String+Regex.swift

    1. import Foundation
    2. extension String{
    3. ///从当前字符串中,过滤链接和文字
    4. ///元组,可以允许一个函数返回多个数值
    5. func href() -> (link: String, text: String)?{
    6. //创建正则表达式
    7. //匹配方案 - 专门用来过滤字符串的
    8. // throws 针对 patern 是否正确的异常处理
    9. let pattern = "\"(.*?)\" .*?>(.*?)"
    10. //throws 针对 pattern 是否正确的异常处理
    11. let regex = try! NSRegularExpression(pattern: pattern, options: [])
    12. guard let result = regex.firstMatch(in: self, options: [], range: NSRange(location: 0, length: self.count)) else{
    13. print("没有匹配项目")
    14. return nil
    15. }
    16. let str = (self as NSString)
    17. let r1 = result.range(at: 1)
    18. let link = str.substring(with: r1)
    19. let r2 = result.range(at: 2)
    20. let text = str.substring(with: r2)
    21. //print(link + "\n" + text)
    22. return (link,text)
    23. }
    24. }

     3. 测试方法

    1. print(str.href()?.link)
    2. print(str.href()?.text)

    4.输出结果
    Optional("http://app.baidu.com/t/feed/6vtZb0")
    Optional("百度 baidu.com")

  • 相关阅读:
    js对象深拷贝(深克隆)
    排序算法基础篇
    华纳云:美国高防服务器的防火墙介绍
    云通信接口更新迭代——SUBMAIL API V4正式上线
    STM32HAL库CRC学习及测试记录
    JVM中的堆的新生代、老年代、永久代
    【 C++】11 C++的继承
    微软广告和网络服务CEO承认OpenAI的Sora将加入Copilot,但需要一些时间
    深入理解“教育是最廉价的国防” Education is the cheapest form of defense
    Excel函数
  • 原文地址:https://blog.csdn.net/u011193452/article/details/125992706