• 正则表达式


                                                                                     正则表达式--python

    一  re 模块,我们可以 import re 模块

         1、例:索引一个元素

                   re.search(r'查找对象','字符串')    返回值为对象,如果想获取,可以对他赋一个值。

                   m = re.search(r'a','aljgoiimg')

                   m.group()          ->  可以返回第一个 a 元素

                   m.span()           ->   可以返回 a 元素的索引值

         2、     re.match()    必须从一开始,正则表达式满足里面条件,才能有东西返回,否则为none        

         3、     re.findall()     遍历字符串,找到正则表达式匹配的所有位置,并且以列表的形式返回

         4、     group()      返回匹配到的字符串

         5、     re.compile()   编译正则表达式为模式对象

        

    二  元字符

         (1)

         .       匹配所有内容    例: re.search(r'.','https://i.cnblogs.com/EditPosts.aspx?opt=1')

                 注意:    .   不匹配换行符(/n)

         d     匹配任意数字    例: re.search(r.'d','https://i.cnblogs.com/EditPosts.aspx?opt=1')

                 注意:    d

         s     匹配空白符       例:re.search(r.'s','https://i.cnblogs.com/EditPosts.aspx? opt=1')

                 注意:    为空白符

         w    匹配字母或数字或下划线或汉字    注意:没有空格、特殊字符

             边界符             例:re.search(r.'is','This is a list')   匹配中间那个is,边界不止是空格,可以是末尾开头等

         ^     匹配开头符       例:re.search(r.'^https','https://i.cnblogs.com/EditPosts.aspx? opt=1')

         $     匹配结尾符        例:re.search(r.'$1','https://i.cnblogs.com/EditPosts.aspx? opt=1')

         解除元字符本身意义,通过加特殊字符接触

         D S W B 是与小写的相反的作用

        (2)匹配次数

          通过参数后跟{}添加数字,匹配对应的次数     

                      {2}                     例:  re.search(r.'d{2}','https://i.cnblogs.com/EditPosts.aspx?ss234355.gpg')          匹配前2次

                      {2,4}                例:  re.search(r.'d{2,4}','https://i.cnblogs.com/EditPosts.aspx?ss234355.gpg')      匹配两个或4个数字,以范围大的为准

                      {,4}                  例:  re.search(r.'d{,4}','https://i.cnblogs.com/EditPosts.aspx?ss234355.gpg')        等价于{0~4}

                      {4,}                  至少匹配4次

          通过 * 或 + 匹配次数

                       例:  URL = 'gegehttps://i.cnblogs.com/EditPosts.aspx?234355.gpgGJEOGIhttps://i.cnblogs.com/EditPosts.aspx?234355.gpgiein'

                               p  = re.compile(r'http:.+.gpg')                 可先将 ‘会调用多次的字符串’ 通过re模块里的compile来保存下来   

                               ss  = re.search(p,URL)                              直接把p放到第一个参数里,URL字符串放到第二个参数里,然后赋值

                               ss.group()                                               即可返回截取的特定字符串

                      注意:  此时截取的字符串里有两个http地址,并没有达到效果。

                               p   = re.compile(r'http:.+?.gpg')               标红部分代替上面的 p ,里面添加了?,使用非贪婪模式,只截取前面一部分就可以了

                               xx  = re.findall(p,URL)                               通过findall方法,可将URL里面的两个地址都截取出来,并且放到列表里

        (3)子组匹配

          1、 通过在[]里添加符号,进行分组匹配,只匹配一个

                                                   例: re.research(r'list[,:.!]','lsiaglist,lignt')      那么它会返回  list,这一条,可对比上面的例子提前定义里面那个”list“,很好用。

          2、通过在[]里添加[0-9],进行匹配,可分组到数字,跟上面一样

          3、通过在[]里添加[字母],进行匹配,可分组到数字,跟上面一样

          4、在[]里,^表示除了            例: re.research(r'list[^/d]','lsiaglist,lignt')      它能有数据返回

                                                         re.research(r'list[^/d]','lsiaglist7,lignt')     它不能有数据返回

          5、在[]里, .表示取自己的本身,没有意义

         

       (4)分组

          1、|  表示  或                       例:re.research(r'ab | c','lsiaglist,ligntfjklagac')        返回 c

                                                         re.research(r'a(b | c)','lsiaglist,ligntfjklagac')      返回 ac

         
          2、                                          re.research(r'ab*','lsiaglist,ligntfjklagac')           返回a,它表示截取abbbb+,其中*针对的是b,代表0次或多次

                                                         re.research(r'ab+','lsiaglist,ligntfjklagac')          无返回值,其中+针对的b,代表1次或多次,例子中无ab组合,所以无法返回

                                                        

         

               

    拒绝拖延,不忘初衷
  • 相关阅读:
    洛谷 P2915 [USACO08NOV]奶牛混合起来Mixed Up Cows 题解
    洛谷 P2687 [USACO4.3]逢低吸纳Buy Low, Buy Lower/ACWing 314 低买 题解
    7、Python异常
    必须要调整心态,积极起来,不能再偷懒
    5、Python函数
    10、Python数据库支持
    8、Python方法、属性、迭代器
    9、Python模块和标准库
    6、Python抽象的类
    UDP Linux编程(客户端&服务器端)
  • 原文地址:https://www.cnblogs.com/renjidong/p/6766306.html
Copyright © 2020-2023  润新知