说到使用正则匹配字符串,就不得不说三个常用的匹配检索方法:re.search(),re.match()和re.findall()。
主要的区别是前两个方法只在目标字符串中匹配一次满足条件的正则表达式;而re.findall()方法匹配目标字符串中所有满足条件的正则表达式;另外re.match()只会匹配目标字符串开头是否满足正则表达式,若开头不满足则匹配失败,函数返回None;而re.search()则不限位置。
至于具体的细节,请参考:
Python 正则表达式
我这里想说的是re.search()方法的一些具体用法,直接上例子:

import re
text = "生于杭州市余杭区,成长经历地杭州市余杭区,居住较长的地区杭州市余杭区69年,无疫区居住史,无冶游史,有饮酒习惯,酒类:白酒,每天500-600ml,已饮30年,未戒。,有吸烟习惯,种类:纸烟,每天20-30支,已吸30年,已戒6年。,否认毒物及放射性物质接触史。既往在矿场工作。"
pattern = r'(有吸烟习惯)[,,]种类[::]纸烟[,,](每[天日周月]\d{1,2}-\d{1,2}[支根])[,,]已吸(\d{1,2}年)[,,](已戒)(\d{1,2}年)。'
result = re.search(pattern, text)
print(result)
print(type(result))
print(result[1])
print(type(result[1]))
print(result[2])
print(result[3])
print(result[4])
print(result[5])
print(result.group())
print(type(result.group()))
print(result.groups())
print(type(result.groups()))
print(result.group(1))
print(type(result.group(1)))
print(result.group(2))
print(result.group(3))
print(result.group(4))
print(result.group(5))

先简单说一下相关代码的意义:
text是目标字段;pattern是正则表达式,其中使用小括号“()”的作用在这里是捕获分组的意思,也就是在正则匹配的时候,将小括号中匹配到的文本编号并存储到内存中以供后续使用;中括号“[]”中的内容表示或的关系,比如“[,,]”就表示匹配一个汉语逗号“,”或者英文逗号“,”;"\d{1,2}"表示匹配至少一位至多两位数字,也就是匹配一位或者两位数字;group()方法是用来获得相应的分组结果的,其中“.group()”和“.group(0)”是完全一样的。

上述代码执行的结果是:

<_sre.SRE_Match object; span=(84, 116), match='有吸烟习惯,种类:纸烟,每天20-30支,已吸30年,已戒6年。'>
<class '_sre.SRE_Match'>
有吸烟习惯
<class 'str'>
每天20-30支
30年
已戒
6年
有吸烟习惯,种类:纸烟,每天20-30支,已吸30年,已戒6年。
<class 'str'>
('有吸烟习惯', '每天20-30支', '30年', '已戒', '6年')
<class 'tuple'>
有吸烟习惯
<class 'str'>
每天20-30支
30年
已戒
6年

笔者发现了比较有意思的点,就是“result[1]”和"result.group(1)“的属性和值是完全一样的,也就是说就算你不使用group()方法进行分组,一旦你使用re.search(),其内部是已经分好了组的,可以通过"result[i]”(其中i是组号)直接获取对应组的值,这一点还是比较方便的。

python中re.search()函数的用法相关推荐

  1. python join_详解Python中的join()函数的用法

    函数:string.join() Python中有join()和os.path.join()两个函数,具体作用如下: join(): 连接字符串数组.将字符串.元组.列表中的元素以指定的字符(分隔符) ...

  2. opencv python 中cv2.putText()函数的用法

    opencv python 中cv2.putText()函数的用法 文章目录: 一.快速使用 二.官方文档 三.使用举例 虽然用啦很多次,还是决定记录一下 一.快速使用 cv2.putText(ima ...

  3. python中内置函数的用法_python中str内置函数用法总结

    大家在使用python的过程中,应该在敲代码的时候经常遇到str内置函数,为了防止大家搞混,本文整理归纳了str内置函数.1字符串查找类:find.index:2.字符串判断类:islower.isa ...

  4. python中item是什么意思中文-Python中items()系列函数的用法详解

    这篇文章主要介绍了Python中dictionary items()系列函数的用法,很实用的函数,需要的朋友可以参考下 本文实例讲述了Python中dictionary items()系列函数的用法, ...

  5. Python中的join()函数的用法

    函数:string.join() Python中有join()和os.path.join()两个函数,具体作用如下:     join():    连接字符串数组.将字符串.元组.列表中的元素以指定的 ...

  6. python中tensorflow的函数简单用法(未完)

    tf.nn.softmax Softmax的含义:将一个N*1的向量归一化为(0,1)之间的值,由于其中采用指数运算,使得向量中数值较大的量特征更加明显. Softmax输出的就是该样本属于各个类的概 ...

  7. python语句join_详解Python中的join()函数的用法

    原博文 2017-08-07 20:51 − 函数:string.join() Python中有join()和os.path.join()两个函数,具体作用如下: join(): 连接字符串数组.将字 ...

  8. python中的split函数的用法实例_python中的split()函数的用法

    函数:split() Python中有split()和os.path.split()两个函数,具体作用如下: split():拆分字符串.通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(li ...

  9. python中split的用法-python中的split()函数的用法

    函数:split() Python中有split()和os.path.split()两个函数,具体作用如下: split():拆分字符串.通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(li ...

最新文章

  1. Don’t Use the Win32 API PostThreadMessage() to Post Messages to UI Threads(翻译)
  2. springboot2.0系列(二):配置属性
  3. conda deactivate python3_conda进行python环境隔离
  4. 敏捷开发系列学习总结(14)——Spotify敏捷模式详解三部曲第二篇:研发过程
  5. ImageMagick命令执行漏洞(CVE-2016–3714)利用及测试
  6. 开发人员一定要加入收藏夹的网站
  7. 网络社区划分的算法分类(2)
  8. 蚁群算法 c语言,基本蚁群算法代码C版
  9. simulink的pid参数自整定
  10. python3 pdf转图片_Python 将pdf转成图片的方法
  11. pearson相关性
  12. 《决胜B端》读书笔记04:互联网领域常见产品方向、盈利模式、盈利模式对产品方向的诉求
  13. properties文件
  14. 数据恢复中的“老大难”:文件碎片 | 专家约稿
  15. oracle用户之间授权查询
  16. python学习--文件操作
  17. Oracle如何限制非法调用包中过程
  18. js css3挂历撕掉动画特效
  19. 在matlab中 编程n,Matlab与C++混合编程 1--在C++中调用自己写的matlab函数
  20. 【转】Java 专业词汇

热门文章

  1. mysql主从同步错误:The slave I/O thread stops because master and slave have equal MySQL server UUIDs
  2. Spark SQL的selectExpr用法
  3. vivo手机html有吗,vivo手机有哪些系列?区别是什么?
  4. oracle HTTP Server安装和配置为集群代理(linux)
  5. bailian.openjudge 2692:假币问题
  6. Android sdk platform,sdk tools,sdk Build tools,sdk platform tools 的关系
  7. Java面试题:单核CPU支持多线程吗?
  8. nodeclub迁移至nodebb
  9. 卷积神经网络和图像分类识别
  10. 你的放大器是否可能自激振荡?