zoukankan      html  css  js  c++  java
  • 正则表达式

    1.1什么是正则表达式
        正则表达式是一种特殊的字符串模式,用于匹配一组字符串,就好比用模具做产品,正则就是这个模具,定义一种规则去匹配符合规则的字符
    2.1元字符介绍
        ^:会匹配长或者字符串的起始位置,有事还会匹配整个文档的其实位置
        $:匹配行或字符串的结尾
        :不会消耗任何字符只配匹一个位置,常用于匹配单词边界 ex: this is regex 匹配 is    is
        d:匹配数字
        w:匹配字母,数字,下划线
        s:匹配空格
        .:匹配除了换行符以外的任何字符   w的加强版
        []:字符组 匹配包含括号内元素的字符  ex1:[abc]   ex2:[a-z]
    2.2反义
        W: 匹配任意非字母,数字,下划线的字符
        S: 匹配任意非空格字符
        D:匹配任意非数字字符
        B:匹配不是单词开头或结束的位置
        [^]:匹配非包含的元素字符   ex:[^abc] 匹配非abc的字符
    2.3量词 用在元字符后
        贪婪(贪心) 贪婪量词会首先匹配整个字符串,尝试匹配时,他会选定尽可能多的内容,如果失败则回退一个字符,然后再次尝试回退的过程就叫做回溯,它每次回回退一个字符,知道匹配的内容或者没有字符可以回退,相比下面两种贪婪量词对资源的消耗最大
        懒惰(勉强) 懒惰量词从目标的起始位置开始尝试匹配,每次检查一个字符,寻找他要匹配的内容,如此循环到字符结尾
        占有 量词会覆盖整个目标字符串,然后尝试寻找匹配内容,但他只尝试一次,不会回溯,就好比先抓一把石头,然后从石头里挑出黄金
     
        *(贪婪)重复0次或更多 相当于{0,} ex:a*
        +(占有)重复一次或更多 相当于{1,} ex:a+
        ?(懒惰)重复0零次或一次 相当于{0,1}
        {n} 重复n次
        {n,m} 重复n到m次
        {n,} 重复n或更多次  ex:d{2,}
    2.4懒惰限定符
        *?:重复任意次,但尽可能的少重复 ex:acbacb 正则a.*?b 只会取到acb
        +?:重复一次或更多次,但尽可能的少重复
        ??:重复0次或一次,但尽可能的少重复
        {n,m}?:重复n到m次,但尽可能的少重复
        {n,}?:重复n次以上但尽可能的少重复
    3.1捕获分组
        括号内的内容为捕获分组,如(d)d  (d)就是一个捕获分组,可以对捕获分组进行后项引用(如果后面有相同的内容则可以直接引用前面定义的捕获组,以简化表达式)如(d)d1这里的1就是对(d)的后向引用
        ex:zery zery 正则(w+)s1这里的1多捕获的字符与(w+)一样是zery,为了让组名更具意义,组名可以自定义名字
        (?<name>w+)sk<name> 用?<name>就可以定义组名了,k<name>就可以反向引用了,自定义组名后,捕获组中匹配的值就会保存的定义的组里了
        捕获组常用
        (exp) 匹配exp,并捕获文本到自动命名的组里
        (?<name>exp)匹配exp,并捕获文本到name组里
        (?:exp)匹配exp,不捕获匹配的文本,也不分配组好。主要是用括号限制后面符号作用范围
        (?=exp)匹配exp前面的位置
        (?<=exp)匹配exp后面的位置
        (?!exp)匹配后面跟的不是exp的位置 ex:1234abc  d{3}(?!d)  234
        (?<!exp)匹配前面不是exp的位置
     
  • 相关阅读:
    【JavaScript】JavaScript 思维导图
    python logging 模块
    推荐系统
    【Linux】国内镜像汇总
    python 小游戏练手
    Python3 拼图小游戏
    python cls self 讲解
    Python-插件化开发
    Python-并发和线程
    git命令的使用
  • 原文地址:https://www.cnblogs.com/dan2/p/12599715.html
Copyright © 2011-2022 走看看