一、re的match与search方法

  1.re.match方法  

  re.match 尝试从字符串的起始位置匹配一个模式,匹配成功re.match方法返回一个匹配的对象,如果不是起始位置匹配成功的话,match()就返回none。函数语法:

re.match(pattern, string[, flags])  

  函数参数说明:

  pattern:匹配的正则表达式

  string:要匹配的字符

  flags:标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等

  2.match对象

  可以使用group() 、 groups()、groupdict() 匹配对象函数来获取匹配表达式。

  group([group1, …]): 获得一个或多个分组截获的字符串;指定多个参数时将以元组形式返回。group1可以使用编号也可以使用别名;编号0代表整个匹配的子串;不填写参数时,返回group(0);没有截获字符串的组返回None;截获了多次的组返回最后一次截获的子串

  groups([default]): 以元组形式返回全部分组截获的字符串。相当于调用group(1,2,…last)。default表示没有截获字符串的组以这个值替代,默认为None。

  groupdict([default]): 返回以有别名的组的别名为键、以该组截获的子串为值的字典,没有别名的组不包含在内。default含义同上。

  

  3.re.search方法

  re.search 扫描整个字符串并返回第一个成功的匹配。匹配成功re.search方法返回一个匹配的对象,否则返回None。函数语法:

re.search(pattern, string, flags=0)

  参数说明:

  pattern:匹配的正则表达式

  string:要匹配的字符

  flags:标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等

  程序例子:

  match与search方法的区别:

import re
reg = re.compile(r'(hello w.*)(hello l.*)')
print (dir(reg))
a = 'hello world hello ling'
result = reg.match(a)
print (result)
print (result.group()) b='aa'+a
print (b)
result2 = reg.match(b)
print (result2) #正则对象的search
print ('###############search########################')
result3 = reg.search(b)
print (result3)
print (result3.group())

结果:

  group() 、 groups()、groupdict()三种获取方式的区别:

import re
prog = re.compile(r'(?P<tagname>abc)(.*)(?P=tagname)')
result = prog.match('abclfjlad234sjldabc') print(dir(result)) print ('##########groups()##############')
print (result.groups()) print ('##########group()##############')
print (result.group(2))
print (result.group(1))
print (result.group('tagname')) print ('##########groupdict()##############')
print (result.groupdict())

结果:

二、re的split、findall、finditer方法 

  split(string[, maxsplit]):按照能够匹配的子串将string分割后返回列表。maxsplit用于指定最大分割次数,不指定将全部分割。

  findall(string[, pos[, endpos]]) :搜索string,以列表形式返回全部能匹配的子串.

  finditer(string[, pos[, endpos]]):搜索string,返回一个顺序访问每一个匹配结果(Match对象)的迭代器。

  程序例子如下:

import re

p1 = re.compile(r'\d+')
a_str = 'one1two2three3four4' #正则对象的split方法,使用正则匹配进行分割字符串
#以列表的形式返回
print(p1.split(a_str)) #正则对象的findall方法,来查找符合对象的字符串
#最后是以列表的形式返回
print (p1.findall(a_str)) for i in p1.finditer(a_str):
print (i.group())

结果:

Python的re模块的常用方法的更多相关文章

  1. python中os模块的常用方法

    1.os模块:os模块在python中包含普遍的操作系统功能,下面列出了一些在os模块中比较有用的部分. os.sep可以取代操作系统特定的路径分隔符.windows下为 “\\” os.name字符 ...

  2. python的xlwt模块的常用方法

    工作中需要导出数据为excel格式,使用了xlwt模块,在此记录一下用到的内容. 1. 创建一个表,设置一个sheet import xlwt workbook = xlwt.Workbook(enc ...

  3. python中calendar模块的常用方法

    >>> import calendar >>> calendar.isleap(2000) #判断是否是闰年 True >>> calendar. ...

  4. 【308】Python os.path 模块常用方法

    参考:Python os.path 模块 参考:python3中,os.path模块下常用的用法总结 01   abspath 返回一个目录的绝对路径. 02   basename 返回一个目录的基名 ...

  5. 【Python之路】第六篇--Python基础之模块

    模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才 ...

  6. python函数,模块及eclipse使用

    一.eclipse的使用 1.作用 (1)最好用的IDE (2)可调式debug (3)查看可执行过程 (4)可查看源代码 2.安装eclipse及配置 目录安装Pythonpython for ec ...

  7. Python中collections模块

    目录 Python中collections模块 Counter defaultdict OrderedDict namedtuple deque ChainMap Python中collections ...

  8. 周末班:Python基础之模块

    什么是模块 什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编写 ...

  9. python的datetime模块处理时间

    python的datetime模块主要用来处理时间,里面包含很多类,包括timedelay,date,time,datetime等 开发中经常会用到模块里面的datetime类,这是一个表示日期时间的 ...

随机推荐

  1. C4C Cloud Application Studio做ABSL开发的一些性能方面的最佳实践

    Stefan Hagen在博文SAP Cloud Application Studio Performance Best Practices里介绍了在C4C里使用Cloud Application S ...

  2. OC static 和函数

    #include <stdio.h> // 定义一个one函数 // 完整地定义一个外部函数需要extern关键字 //extern void one() { // printf(&quo ...

  3. EXCRT

    是个好东西,可以处理在模数不互质的同余方程组 核心就是用扩欧来合并方程 如果我们有两个形如\(x\equiv b_1(mod\ a_1)\) \(x\equiv b_2(mod\ a_2)\)的方程我 ...

  4. ZOJ 1610 Count the Colors【题意+线段树区间更新&&单点查询】

    任意门:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1610 Count the Colors Time Limit: 2 ...

  5. 2018.11.12 Spring事务的实现和原理

    Spring事务用法示例与实现原理 关于事务,简单来说,就是为了保证数据完整性而存在的一种工具,其主要有四大特性:原子性.一致性.隔离性和持久性.对于Spring事务,其最终还是在数据库层面实现的,而 ...

  6. intelli j中如何重启tomcat,或者关掉tomcat?每次点run都提示jmx端口占用

    方法1.idea有时候会这样,我一般都是直接打开任务管理器,把java进程给杀掉就好了.

  7. miniMobile(手机)

    官网:http://www.web2014.cn/

  8. py faster rcnn+ 1080Ti+cudnn5.0

    看了py-faster-rcnn上的issue,原来大家都遇到各种问题. 我要好好琢磨一下,看看到底怎么样才能更好地把GPU卡发挥出来.最近真是和GPU卡较上劲了. 上午解决了g++的问题不是. 然后 ...

  9. how to create a custom form for sharepoint list

    在VS中创建一个applicationPage映射到Layouts文件夹下,然后代码如下: SPList lstTest = web.Lists["Shared Documents" ...

  10. iview+axios实现文件取消上传

    iview+axios实现文件取消上传 iview框架的上传文件目前不支持在上传文件的过程中取消上传,结合axios请求可以实现:使用iview的上传和拖拽功能,却使用axios的上传文件功能来实现取 ...