美文网首页
关于正则表达式的总结

关于正则表达式的总结

作者: 桂宁813 | 来源:发表于2017-05-07 10:32 被阅读13次

    正则表达式 :最大的用途就是用来匹配字符串,进行模糊查询。正则表达式不是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

    相关文章

      网友评论

          本文标题:关于正则表达式的总结

          本文链接:https://www.haomeiwen.com/subject/gmrutxtx.html