码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 正则表达式


    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. let str = "aaaa zxzc \"http://app.baidu.com/t/feed/6vtZb0\" rel=\"nofollow\">百度 baidu.com asda"
    2. print(str.href()?.link)
    3. print(str.href()?.text)

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

  • 相关阅读:
    每天一个知识点- redis 缓存雪崩、缓存穿透、缓存击穿
    Git学习笔记
    Python类练习
    力扣560. 和为 K 的子数组
    如何快速搞定一篇期刊论文
    Vue路由和Node.js环境搭建
    java毕业设计开题报告javaweb户籍管理系统|户口
    golang中零停机重启服务之套接字复用,endless
    携载PEG-PLA纳米粒子/F3O4磁性纳米粒子/银纳米团簇基/纳米二氧化钛改性壳聚糖水凝胶
    【ESP32 + Edge Impulse平台】模拟多传感器数据融合实验测试
  • 原文地址:https://blog.csdn.net/u011193452/article/details/125992706
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号