美文网首页
正则表达式

正则表达式

作者: 梦醒家先生 | 来源:发表于2018-05-10 01:17 被阅读0次

    1. 正则表达式(pattern):就是记录文本规则的代码,从头匹配对应的字符串数据 

    2. 正则表达式匹配单个字符:根据表达式从头匹配对应的字符串数据

    #导入模块

    import re

    # 使用match方法进行匹配操作

    result = re.match(正则表达式,要匹配的字符串)

    # result是pattern返回的实力对象和返回匹配的字符串,都过group函数方法提取数据

    # 如果上一步匹配到数据的话,可以使用group方法来提取数据

    result.group()

        # 1. pattern: 正则表达式

        # 2. string:要匹配的字符串

        # 3. 返回匹配结果的对象,使用group方法来提取数据

    2.1匹配单个字符

      . :匹配任意1个字符(除了\n)

      [ ]:匹配[]中的任意一个字符

      \d :[0-9]表示匹配是0-9的之间的任意一个数据

      \D :匹配非数字,即不是数字的任意一个字符

      \s : 表示匹配空白字符,即空格,tab键

      \S :表示匹配是非空白单个字符

      \w : 表示匹配字母,数字,下划线,汉字

      \W : 表示匹配不是字母,数字,下划线,汉字(即匹配一些特殊符号)

    3. 正则表达式匹配多个字符:修饰前一个字符文本格式

    (1) * : 表示匹配前一个字符可能有0个或者多个,------即可有可无

        + :表示匹配前一个字符至少有一个或者多个,----即至少有一个

        ? : 表示匹配前一个字符可能出现0次或者1次,----即要么有1次,要么有0次

      {m}: 表示匹配前一个字符必须要出现m次

    {m,n}: 表示匹配前一个字符至少出现m次,至多出现n次

    {m, }: 表示匹配前一个字符至少出现m次

    4. 正则表达式匹配开头结尾字符:

        (1) ^ : 匹配字符串中以什么开头

            $ : 匹配字符串中以什么结尾

           \b : 匹配单词的开始或结束,也就是单词的分界处,但是\b并不匹配这些单词分隔字符中的任何   一个,它只匹配一个位置

          [^x]: 除了以x开头的字符串,都匹配

    5. 扩展:

    \ : 表示对正则表达式的代码进行转义,识别为普通的字符串

    \.: 表示对正则表达式的代码进行转义,让其成为是一个普通点字符串--> . : 因为匹配任意1个字符

    6. 匹配分组:也叫子表达式

    6.1

       | : 匹配左右任意一个表达式,使用分枝条件时,要注意各个条件的顺序匹配分枝条件时,将会从左到右地测试每个条件,如果满足了某个分枝的话,就不会去再管其它的条件了 

        (ab) : 将括号中的字符作为一个分组--->用group(1)# 获取第一个分组的数据,默认是0获取者整个数据

         \num : 引用分组num匹配到字符串,直接将分组里匹配的字符引用

         (?p) : 分组起别名

    (?p=name) : 引用别名为name分组匹配到的字符串

     (?#comment) : 注释,这种类型的分组不对正则表达式的处理产生任何影响,用于提供注释让人阅读

    6.2扩展: 获取多个分组,分别获取分组里面的数据

      (ab) : 将括号中的字符作为一个分组--->用group(1)# 获取第一个分组的数据,默认是0获取者整个数据

     # 0: 表示获取整个数据

            print(match_obj.group(0))

     # 获取第一个分组数据

          print(match_obj.group(1))

      # 获取第二个分组数据

            print(match_obj.group(2))

    7. re的高级使用:根据正则表达式查找对应的数据

    (1) search: 只搜索一个对应的数据(匹配搜索对应对应的数据)---re.search(正则表达式,要匹配的字符串)

        group()方法提取数据只在,search和martch搜索~匹配数据的时候

    (2) findall:返回的是匹配的结果zifuchuan类型列表---re.findall(正则表达式,要匹配的字符串)

    (3) sub : 将匹配到的数据进行替换---re.sub(正则表达式,替换的内容,要匹配的字符串)

            count:表示替换次数,1:只替换一次  不加count默认替换全部

            re.sub("\d+", "200", "阅读数:1 评论数:10", count=1)

        (3.1)替换函数可以在原有的数据基础上加上指定的数据

            # add是替代内容的函数,通过函数进行修改数据

              def add(match_obj):

                     result = match_obj.group()

                     value = int(result) + 1

                     return str(value)

            result = re.sub("\d+", add, "阅读数:100")

    (4) split:根据正则表达式进行分割数据---re.split(正则表达式,要匹配的字符串,maxsplit=0)

        maxsplit:最大分割次数,默认最大全部分割

    8. re的高级使用总结

    match:匹配对应的字符串,返回匹配对象和字符串,前后对应(pattern,string)

    search:只搜索匹配一个对应的数据(匹配对应的pattern)

    findall:直接返回匹配到的数据(匹配所有的pattern)

    sub:将匹配到的数据进行替换(匹配对应的pattern,进行替换)可以传参数替换次数或替换add函数


    正则表达式30分钟

    http://www.cnblogs.com/deerchao/archive/2006/08/24/zhengzhe30fengzhongjiaocheng.html


    xmind

    相关文章

      网友评论

          本文标题:正则表达式

          本文链接:https://www.haomeiwen.com/subject/esparftx.html