正则表达式

  

 1. 什么是正则表达式:

    一种匹配字符串的规则

 2. 正则表达式能作甚莫

    制定一个规则,来确定一个字符串是否符合规则或者从大段的字符串中,找到符合规则的

    内容

    登录注册表单验证 ; 爬虫 ; 自动化开发 ; 日志开发

 3. 正则表达式语法

   元字符:

    字符组 [ ]  在一个字符的位置上能出现的内容

      [0-9] 表示这一位置上只匹配0到9之间的一个数字

     [A-Z] 表示这一位上只能匹配A到Z之间的一个大写字母(Python根据ascii码的顺序确

      定A-Z的先后范围)

     [a-z] 表示这一位上只能匹配a到z之间的一个小写字母(Python根据ascii码的顺序确

      定a-z的先后范围)

     [0-9][A-Z][a-z]表示匹配三个字符,且按照顺序满足每一位置上的条件

     [0-9a-zA-Z]  标识匹配一个字符,满足每一范围的条件.但是没有顺序限制

     [^abc] 非字符组 在此种情况,^ 相当于'非', 与[ ]所对应的位置不允许有[ ]内的内容

    

    d  表示匹配一个字符,匹配的是一个数字

    w  表示匹配一个数字字母下划线

    s  标识匹配任意一个空白字符(回车 / ,空格,制表符 / tab)

      表示匹配回车

      表示匹配制表符

    D  匹配非数字

    W  匹配非数字字母下划线

    S  匹配非空白字符

    [dD] [sS] [wW]  表示匹配所有

    .  匹配除换行符以外的任意字符

      匹配一个单词的边界   o  表示只匹配以o结尾的边界  o 表示匹配以o开始的边界

    ^  匹配字符串的开始

    $ 匹配字符串的结尾

                                 

    |    表示可以匹配 | 左右的字符都可以( ' 或 ' 的意思)

       abc|ab   'abc'和'ab'都可以 ; 

      ab|abc   只有ab可以,(从左往右查找,找到就停止,所以只找'ab',不再往下找)

    ()  分组 

  

  量词 ?  +  *  {}

   ?   表示 0 次或1 次  + 表示 1 次或多次  * 表示 0 次或多次

   {n}  表示 n 次  {n,}   n 次以上  {n,m}   n 到 m 次

   元字符和量词结合 , 表示在同一位置可以陪配多个

 回溯算法  (用回溯算法完成贪婪匹配)

  特殊的用法和现象

   ? 的使用

    在量词后面加个 ? (??  +?   *?)取消贪婪匹配(尽可能多的匹配) 变成惰性

    匹配(尽可能少的匹配)

原文地址:https://www.cnblogs.com/panda-pandeyong/p/9434255.html