• Python 正则表达式


    正则表达式

    1、字符匹配

    1.1 普通字符

          大多数字母和字符一般都会和自身匹配

          如正则表达式 test会和字符串 "test"完全匹配

    1.2 元字符

        .  ^  $  *  +  ?  {}   [ ]     |   ()

       1) [ ]   

       --常用来表达一个字符集  

       --元字符在字符集中不起作用

       -- 补集匹配不在区间范围内的字符

       Exp:  s =' t[io]p'  t = 'top tip tep trp' re.findall(s,t) 

       Exp:  r =r 'x[0-9]x'   re.findall(r,'x3x')

      2) ^     -- 匹配行首

       。 除非设置multiline标志,它只是匹配字符串的开始。在MULTILINE模式里,它也可以直接匹配字符串中的每个换行。

        r = '^hello'   s = 'hello the world'  re.findall(r,s)   result : ['hello']

      3)$   -- 匹配行尾

        行尾被定义为要么是字符串尾,要么是一个换行字符后面的任何位置。 

       

      4)   -- 反斜杠后面可以加不同的字符以表示不同特殊意义

      5) *    --指定前一个字符可以被匹配零次或更多次,而不是只有一次。匹配引擎会试着重复尽可能多的次数。(不超过整数界定范围,20亿次)

          - a[bcd]*b -- "abcbd"

      6) +   -- 表示匹配一或更多次。

             --注意* 和 + 之间的不同; * 匹配零或更多次,所以可以根本就不出现,而+则要求至少出现一次。

           r = r"ab+"

           re.findall(r,'abbb')
           ['abbb']

      7) ?  --匹配一次或零次;你可以认为它用于标识某事物是可选的

         r = r"^010-?d{8}$"

         re.findall(r,'01012345678')

        result:['01012345678']

    8){m,n} 

        -- 其中m和n是十进制整数。 该限定符的意思是至少有m个重复,至多到n个重复。

        -- 忽略m会认为下边界是0,而忽略n的结果将是上边界为无穷大(实际上是20亿)

        -- {0,}等同于 *,(1,)等同于+,而{0,1}则与?相同。 如果可以的话,最好使用 * , + ,或 ?表示。 

  • 相关阅读:
    jhat:虚拟机堆转储快照分析工具
    jmap:java内存影像工具
    jinfo:Java配置信息工具
    jstat:虚拟机统计信息监视工具
    jps:虚拟机进程状况工具
    jdk工具总领
    到底是"/"还是"/*"
    jdk_keytool
    html地图定位
    java 手机号码归属地查询
  • 原文地址:https://www.cnblogs.com/monjeo/p/7798273.html
Copyright © 2020-2023  润新知