• 正则与re模块


    正则表达式和re模块
    1.  正则式是客观存在的,用于匹配字符串的一种方法。多用于数据分析和爬虫。
         正则是一种匹配规则,任何编程语言通用.

    1.1  中括号[字符],所有的限定都是只表示一位

    1.2   元字符w d s   字符,数字,下划线
               大写的  对应非,与上面一组即为全部
               .是换行符之外的所有字符。
                对应于python里的re.S可以匹配所有字符,是python的flags的标识符,默认是re.U,
                    回车和制表符
                ^和$符  前者只针对开头内容往后匹配,后者永远写在最后

                分组是对多个字符组做整体约束用的.在python中,分组优先,findall默认只显示括号里的字符,split会保留切割的刀子们

                | 是两者取一,从左到右匹配,有了就停,所以要把长的规则放前面,不然就永远取不到长的了
                [^]除了字符组内的,其他都匹配

    1.3    量词  *   0到多
             +  1到多
             ?  1和0
            {n}  {n,}  {n,m}  n或n到m或n到无穷


    1.4  转义的问题
    如果带匹配的字符串里出现了上述元字符,就在正则的里面再加个,且都在前面加个r,表示都是真实无转义

    惰性匹配,在量词后面加问号,常用于.#?abc的意思是一直取下去,但是一旦遇到第一个abc就停。

    默认正则是贪婪匹配直至最后一个符合要求的字符串才停

    在python中使用正则规则,引入re模块

    2. re模块
    findall('正则规则','字符串')
    得到一个列表,每一项都是字符串,得到全部目标字符串

    ret=re.search('正则规则','字符串'),只能找到第一个就停止了
    此时返回的内容不是想到的字符串,需要.group(),没有则报错
    为了不报错,if ret:print(ret.group())

    ret=re.match('正则规则','字符串'),从头的第一个字符开匹配
    如果从第一个字符开始能匹配上就返回一个需要.group来获取实际值的变量,不能就返回None
    此时返回的内容不是想到的字符串,需要.group(),没有则报错
    为了不报错,if ret:print(ret.group())

    re.split('','') 根据正则关系进行split
    re.sub('正则规则','替换后','字符串',次数) 根据正则关系进替换
    re.subn('正则规则','替换后','字符串') 根据正则关系进替换,返回字符串和替换的次数
    re.complie('') 编译:内部存放一个正则规则,把这个正则规则编译赋值
    obj = e.complie(''),再利用其寻找的时候,obj.searchu.(字符串)
    当一个正则规则反复使用其规则特别长的时候使用
    re.finditer(ret) 得到的是一个迭代器的地址,想取里面每一个的内容还是加.group()
    当收到的结果特别多的时候,节约内存,使用迭代器


    关于分组,python在search里自动可以通过group(位置数)取相应的内容
    而对于findall则默认取分组内的内容,想取消默认则在分组的左括号后面加上一个'?:'
    给正则的内容加一个分组括号,就会保留切割的依据并把它单独列为列表的一项

    search   返回是一个值需要.group来显示,无则None此时再group则报错,取分组的内容,直接ret.group(),括号内为数字或名,命名:在分组最前面?P加括号内name。
    注:::这里有一种用法是,如果想截取一段头尾相同的字符串,则给前面的分组命名,然后后面的复用这个名字,后面的分组写成:?P等于前面的name,或者是用序号:1取第一组

  • 相关阅读:
    H5 使用 jssdk 出现的问题 错误码:63002 签名错误
    vue 使用 scss
    JS之常用字符串处理类
    hive数仓中两个维度表如果想合并纬度产生新自增ID方法
    叉乘,判线段相交,凸包
    二分查找
    大整数运算
    判定最小生成树是否唯一
    Prim算法
    Boruvka算法
  • 原文地址:https://www.cnblogs.com/shachengcc1/p/11166145.html
Copyright © 2020-2023  润新知