• regex的环视和方括号用法基础讲解


    先介绍下基本的概念,可能看起来这些概念性的东西不是太懂,但是这个还是要记一下的,为以后复杂的regex打下基础.
    (?<=EXP)
    逆序肯定环视,表示所在位置左侧能够匹配EXP
    (?<!EXP)
    逆序否定环视,表示所在位置左侧不能够匹配EXP
    (?=EXP)
    顺序肯定环视,表示所在位置右侧能够匹配EXP
    (?!EXP)
    顺序肯定环视,表示所在位置右侧不能够匹配EXP
    实例:String: a1b2c3d
    l         要匹配字母后面是数字2的字母
    Regex:[a-z](?=2)
    结果:b
    l         要匹配字母前面是数字2的字母
    Regex: (?<=2)[a-z]
    结果:c
    l         要匹配后面不是数字2的字母
    Regex: [a-z](?!2)
    结果:a c d
    l         要匹配前面不是数字2的字母
    Regex: (?<!2)[a-z]
    结果:a b d
    最后说下[]这个问题
    []支持用连字符”-”连接两个字符,来表示一个字符的范围,例如[a-z]表示所有的大小英文字母[0-9]表示0到9所有的数字
    因为[]本身表示的就是字符之间的“或”的关系,因此在[]中使用”|”来表示“或”的关系是错误。
    如果使用字符串间的或关系,那么就需要用到”()”了
    因此在括号的使用上引入了非捕获组与捕获组的概念
    关于记忆:
    带有<符号的都是判断左侧的,<箭头不是向左嘛。
    不带<箭头的都是判断右边的,正则匹配的顺序都是从左至右。

  • 相关阅读:
    平衡二叉树之RB树
    平衡二叉树之AVL树
    实现哈希表
    LeetCode Median of Two Sorted Arrays
    LeetCode Minimum Window Substring
    LeetCode Interleaving String
    LeetCode Regular Expression Matching
    PAT 1087 All Roads Lead to Rome
    PAT 1086 Tree Traversals Again
    LeetCode Longest Palindromic Substring
  • 原文地址:https://www.cnblogs.com/mcshell/p/5655834.html
Copyright © 2020-2023  润新知