re模块的功能介绍

1. 方法

  1. match

    从开头开始查找

    方法:re.match(pattern,string,flags=0)
    返回值:<class '_sre.SRE_Match'>(找到) or None(没找到)
    例如:m = re.match('e','excel')
    print(m.group())
    >>> 'e'
    #该方法只能从开头开始查,如果查找的内容不是开头或者不存在时,返回值为None,验证时调用group方法时将报错,如果找到了,也只有一个,验证时可以使用group方法进行获取查找的内容。
  2. search

    全文搜索,只获取第一个

    方法:re.search(pattern,string,flags=0)
    返回值:<class '_sre.SRE_Match'>(找到) or None(没找到)
    例如:s = re.search('ba','adbadfsbadsf')
    print(s.group())
    >>> 'ba'
    #该方法与上述方法类似,不过该方法查找的范围是全部内容,但返回只返回查找到的第一个,验证方法同上。
  3. findall

    返回找到的所有内容(全文搜索)

    方法:re.findall(pattern,string,flags=0)
    返回值:list
    例如:print(re.findall('s','afadsfdsf'))
    >>> ['s','s']
    #该方法不需要通过group方法进行验证,找不到时返回一个空列表。
  4. split

    搜索全文并进行切片

    方法:re.split(pattern,string,maxsplit=0,flags=0)
    返回值:list
    例如:print(re.split('ax','sdaxfsfsaxdfsax'))
    >>> ['sd', 'fsfs', 'dfs', '']
    #指定内容作为分割字符串的点进行切片,如果指定内容开头或者结果则结果为列表中的一个空字符串,同时也可以指定切片的最大次数。
  5. sub

    替换

    方法:re.sub(pattern,repl,string,count=0,flags=0)
    返回值:str
    例如:print(re.sub('a','23','sdfafasdf'))
    >>> 'sdf23f23sdf'
    #该方法默认全文替换,可以指定替换次数,如果查找的内容不存在时,将返回原字符串。
  6. fullmatch

    完全匹配搜索

    方法:re.fullmatch(pattern,string,flags=0)
    返回值:<class '_sre.SRE_Match'>(找到) or None(没找到)
    例如:fm = re.fullmatch('sa','sa')
    print(fm.group())
    >>> 'sa'
    #该方法与match类似,只不过,该方法搜索的匹配内容必须和搜索的原文一样,否则都认为是未找到。
  7. subn

    替换并返回元祖

    方法:re.subn(pattern,repl,string,count=0,flags=0)
    返回值:tuple
    例如:print(re.subn('as','3','sfsasa,sdf'))
    >>> ('sfs3a,sdf', 1)
    #该方法把替换后的字符串作为元祖的第一个元素,第二个元素为替换的次数,如果未替换,则次数为0
  8. finditer

    查找所有并把返回值生成一个迭代器

    方法:re.finditer(pattern,string,flags=0)
    返回值:<class 'callable_iterator'>
    例如:f_iter = re.finditer('a','adsfasfa')
    find_l = [i.group() for i in f_iter]
    print(find_l)
    >>> ['a', 'a', 'a']
    #利用列表推导式把获取到的结果作为列表进行返回。

2. 表达式符号

  1. 常用符号如下:

        符号                      表示
    1. '.' 默认匹配除\n之外的任意一个字符,包括字母、数字、中文、特殊字符等,若flags指定为S(DOTALL),则匹配任意字符,包括换行符。
    2. '^' 默认匹配字符开头,若flags指定为M(MULTILINE),可以匹配多行中的开头(如:'^a','\nabd\nsaf')。
    3. '$' 默认匹配字符结尾,若flags指定为M(MULTILINE),可以匹配多行中的结尾(如:'$ab','asdfab\ndsa\n')。
    4. '*' 匹配字符0次或多次
    5. '+' 匹配字符1次或多次
    6. '?' 匹配字符0次或1次
    7. '{m}' 匹配字符m次
    8. '{n,m}' 匹配字符n次到m次
    9. '|' 匹配字符二选一
    10. '(...)' 分组匹配
    11. '\A' 匹配字符开头,与'^'一样
    12. '\Z' 匹配字符结尾,与'$'一样
    13. '\d' 匹配数字[0,9]
    14. '\D' 匹配非数字
    15. '\w' 匹配字母、数字、中文,除特殊字符
    16. '\W' 匹配特殊字符,包括\n
    17. '\s' 匹配空白字符(即' ')、\t、\n、\r
    18. '(?P<name>)' 分组匹配加命名

    第18个表达式符号'(?P)'的实例如下:

    s = re.search("(?P<province>\d{2})(?P<city>\d{2})(?P<county>\d{2})(?P<year>\d{4})","371481199306143242")
    print(s.groupdict())
    {'year': '1993', 'city': '14', 'province': '37', 'county': '81'}
    print(s.group())
    3714811993
    print(s.groups())
    ('37', '14', '81', '1993')
    #该表达式得到的返回值也是<class '_sre.SRE_Match'>这个类。通过验证的方法也比较多,验证获得的返回值分别为字典、字符串和元祖类型。
  2. flags常用的几种关键字参数

    1. re.I(re.IGNORECASE):忽略大小写
    2. re.M(re.MULTILINE):多行模式,对'^'和'$'有所改变
    3. S(DOTALL):包含\n的匹配模式,主要用于'.'的匹配规则
    #括号内为完整输入,前面是简写。

    flags关键字参数的实例如下:

    1. re.I

      str1 = '\nad23好*sd\n阿道夫dsaf\nsSD'
      f_i = re.findall('s',str1,flags=re.I)
      print(f_i)
      ['s', 's', 's', 'S']
      #如果flags为默认值(即flags=0),则该返回值中不会有'S'该元素。
    2. re.M

      str1 = '\nad23好*sd\n阿道夫dsaf\nsSD'
      f_start = re.findall('^s',str1,flags=re.M)
      print(f_start)
      ['s']
      f_stop = re.findall('f',str1,flags=re.M)
      print(f_stop)
      ['f']
      #如果flags为默认值(即flags=0),则该返回值应为空列表。
    3. re.S

      str1 = '\nad23好*sd\n阿道夫dsaf\nsSD'
      s_any = re.search('.',str1,flags=re.S)
      print(s_any.group())
      #该打印的结果是空,由于验证时未报错,说明是有匹配到'\n'换行符,如果flags为默认值(即flags=0),则上述验证将报错。

Python中模块之re的功能介绍的更多相关文章

  1. Python中模块之os的功能介绍

    Python中模块之os的功能介绍 1. os的变量 path 模块路径 方法:os.path 返回值:module 例如:print(os.path) >>> <module ...

  2. Python中模块之copy的功能介绍

    模块之copy的功能介绍 copy主要分两种: 1.浅拷贝 2.深拷贝 赋值: 在python中赋值算特殊的拷贝,其实赋值可以理解为同一个对象有两个名字,所以当其中一个发生变化,另一个也跟着会变化. ...

  3. Python中模块之queue的功能介绍

    模块之queue的功能介绍 队列的分类: 队列主要要分为两种 1.双向队列 2.单项队列 1. 单项队列 创建单项队列 格式:queue.Queue(obj) 例如:que = queue.Queue ...

  4. Python中模块之sys的功能介绍

    sys模块的功能介绍 1. sys的变量 argv 命令行参数 方法:sys.argv 返回值:list 例如:test1.py文件中有两句语句1.import sys 2.print(sys.arg ...

  5. Python中模块之random的功能介绍

    random的功能介绍 random模块的方法如下: betavariate 获取一个range(0,1)之前的随机浮点数 方法:random.betavariate(alpha,beta) 返回值: ...

  6. Python中生成器和迭代器的功能介绍

    生成器和迭代器的功能介绍 1. 生成器(generator) 1. 赋值生成器 1. 创建 方法:x = (variable for variable in iterable) 例如:x = (i f ...

  7. Python中def及lambda的功能介绍

    函数def及lambda的功能介绍 1. def函数的功能介绍 1. 函数的参数 无参数函数 格式:def func_name(): '''__doc__'''#函数的说明文档(内容) express ...

  8. 查看python中模块的所有方法

    查看python中模块的所有方法     安装的python模块,现将查看方法总结如下 一.CMD命令行下使用pydoc命令 在命令行下运行$ pydoc modules即可查看 二.在python交 ...

  9. [python]关于在python中模块导入问题追加总结

    [背景] 最近在写程序时,我使用的eclipse编辑器运行都没有问题,然后部署到自动化环境上却偏偏报找不到相应模块问题,现在对该问题在之前的贴子上追加总结 原帖子:[python]关于python中模 ...

随机推荐

  1. python之路--day11---迭代器和生成器

    迭代: 迭代是一个重复的过程,每次重复即一次迭代,并且每次迭代的结果都是下一次迭代的初始值 为什么要有迭代器: 数据类型的取值,字符串,列表,元组依靠索引可以取值,但是字典,集合,文件这些数据类型无法 ...

  2. Linux入门(1)_VMware和系统分区和系统安装和远程登陆管理

    1 VMware的安装和使用 注意有 快照 和 克隆 的功能. 快照相当于建立一个 系统还原点, 可以随时恢复到原来状态. 克隆功能可以复制一个和当前一样的系统,并可以选择链接安装,只使用很少的空间就 ...

  3. awk sed tr替换换行符为逗号,并合并为一行

    在群里看到的.记录以备用.  sed 帮助命令:http://man.linuxde.net/sed 文件里有如下行,我想将每行的回车符替换为逗号,并将所有行合并到一行,用awk或sed怎么写啊TOP ...

  4. 第二章 初识JSP

    第二章   初识JSP 一.JSP简述 1.是JSP JSP是指在HTML中嵌入Java脚本语言.全称(Java Server Pages) 当用户通过浏览器访问Web应用时,使用JSP容器对请求的J ...

  5. tomca配置文件自动还原问题的解决 server.xml content.xml 等

    当我们在处理中文乱码或是配置数据源时,我们要修改Tomcat下的server.xml和content.xml文件. 但是当我们修改完后重启Tomcat服务器时发现xml文件又被还原了,修改无效果. 为 ...

  6. 安装 docker-compose

    安装Docker-Compose之前,请先安装 python-pip,安装好pip之后,就可以安装Docker-Compose了. 一.检查是否已经安装 二.安装 docker-compose 1.安 ...

  7. highstaock+websocket实现动态展现

    效果:从后台获取回测数据,在前端动态展现,和聚宽实现的回测效果相仿 大体思路:先传一个[[int,0],[int,0],[int,0],[int,0],[int,0],...]格式的死数据到前端渲染x ...

  8. Struts(十六):通过CURD来学习Struts流程及ModelDriven的用法

    背景: 从一个Member的增删改查,来了解Struts2的运行原理及学习ModelDriven拦截器.Preparable拦截器. 新建项目实现列表的展示及删除功能: web.xml <?xm ...

  9. linux下多线程互斥量实现生产者--消费者问题和哲学家就餐问题

    生产者消费者问题,又有界缓冲区问题.两个进程共享一个一个公共的固定大小的缓冲区.其中一个是生产者,将信息放入缓冲区,另一个是消费者,从缓冲区中取信息. 问题的关键在于缓冲区已满,而此时生产者还想往其中 ...

  10. springboot集成mybatis(二)

    上篇文章<springboot集成mybatis(一)>介绍了SpringBoot集成MyBatis注解版.本文还是使用上篇中的案例,咱们换个姿势来一遍^_^ 二.MyBatis配置版(X ...