码农知识堂 - 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")

  • 相关阅读:
    Android 开发学习(一)
    练[红明谷CTF 2021]write_shell
    hadoop MapReduce运营商案例关于用户基站停留数据统计
    chromedp库编写程序
    简单工厂模式 和 工厂方法 和 抽象工厂的区别
    JetBrains Annotations:将NPE杀死在编译期
    java JVM原理与常识知识点
    顾客:花钱还要受气?消费体验令人下头,根因与解药何在?
    【机器学习】03. SMOTE算法实现数据集单个不平衡的样本扩充
    日系简约商务通用PPT模板
  • 原文地址:https://blog.csdn.net/u011193452/article/details/125992706
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号