• 正则表达式


    正则表达式所支持的合法字符

    合法字符 说明
    x 字符x(x可代表任何合法的字符)
    mnn 八进制数0mnn所表示的字符
    xhh 十六进制值0xhh所表示的字符
    uhhhh 十六进制值0uhhhh所表示的Unicode字符
    制表符('u0009')
    换行符('u000A')
    回车符('u000D')
    f 换页符('u000C')
    a 报警符('u0007')
    e Escape符('u001B')
    cx x对应的控制符,例如cM匹配Ctrl-M。

     正则表达式中的特殊字符

    特殊字符 说明 匹配本身书写方式
    . 匹配除了换行符 之外的任何单字符 .
         
    $ 匹配一行的结尾 $
    ^ 匹配一行的开头 ^
         
    [] 用于确定中括号表达式的开始和结束位置 [ ]
    () 标记子表达式的开始和结束位置 ( )
         
    {} 用于标记前面子表达式出现频率 { }
    * 指定前面子表达式可以出现零次或多次 *
    + 指定前面子表达式可以出现一次或多次 +
    ? 指定前面子表达式可以出现零次或一次 ?
         
    用于转义下一个字符,或指定八进制、十六进制字符 \
         
    | 指定两项之间任选一项 |

    预定义字符

    预定义字符 说明(匹配一个字符
    . 可以匹配任何字符
    d 匹配0~9的所有数字
    D 匹配非数字
    s 匹配所有空白字符,包括空格、制表符、回车符、换页符、换行符等
    S 匹配所有非空白字符
    w 匹配所有的单词字符,包括0~9所有数字、26个英语字母和下划线(_)
    W 匹配所有的非单词字符

    方括号表达式

    例子 用途 说明
    [acd] 表示枚举 表示匹配acd中任意一个字符
    [a-f] 表示范围 表示匹配a~f中任意一个字符
    [^acd] 表示求否 表示匹配非acd的任意一个字符

    1. [a-z&&[def]]

    2. [a-z&&[^bc]]

    3. [a-z&&[^m-p]]

    表示“与”运算

    1.表示求a~z和def的交集,最终匹配def中任意一个字符

    2.表示求a~z和非bc字符的交集,最终匹配在a~z中非bc的任意一个字符,即[ad-z]

    3.表示求a~z和非m-p字符的交集,最终匹配在a~z中非m-p的任意一个字符,即[a-lq-z]

    [a-d[m-p]] 表示“并”运算 和枚举类似,同[a-dm-p]

    边界匹配符

    边界匹配符 说明
    ^ 行的开头
    $ 行的结尾
     单词的边界
    B 非单词的边界
    A 输入的开头
    G 前一个匹配的结尾
     输入的结尾,仅用于最后的结束符
    z 输入的结尾

    三种模式的数量表示符

    贪婪模式(一致匹配下去,直到无法匹配) 勉强模式(匹配最少的字符) 占用模式(只有java支持) 说明
    X? X?? X?+ X表达式出现零次或一次
    X* X*? X*+ X表达式出现零次或多次
    X+ X+? X++ X表达式出现一次或多次
    X{n} X{n}? X{n}+ X表达式出现n次
    X{n,} X{n,}? X{n,}+ X表达式最少出现n次
    X{n,m} X{n,m}? X{n,m}+ X表达式最少出现n次,最多出现m次

    总结:

    1.在使用正则表达式匹配的过程中,都是按照字符串中的字符,从前往后逐个匹配的。

    2.单个预定义字符、单个方括号表达式都是匹配单个字符。如果加上数量表示符,就可以简化正则表达式的书写。

    例如需要匹配一个138开头的手机号,如果不用数量表示符,就应该这样写138\d\d\d\d\d\d\d\d,如果采用数量表达式,就可以这样表示138\d{8}

    3.正则表达式的书写方式都是从前往后单个字符、单个预定义字符、单个方括号表达式来组合书写,其中会插入边界匹配符以及数量表示符。

    4.除了上面表格中指定的字符,其他字符如果在正则表达式中出现,一律作为普通字符对待。

    常用正则表达式:

    http://blog.jobbole.com/96052/

    http://blog.csdn.net/onebigday/article/details/5429868

  • 相关阅读:
    DRF之url注册器组件
    序列化组件的使用及接口设计和优化
    Django 内置字段
    Django 的 ModelForm组件
    Django组件 中间件
    csrf
    django使用redis做缓存
    微信消息推送
    自定制serilazry字段
    小知识,大智慧(restframework 拾忆)
  • 原文地址:https://www.cnblogs.com/moonpool/p/5878003.html
Copyright © 2020-2023  润新知