一. search 与 matche函数

同样的正则表达式,match 打印的结果是空(没有匹配到结果); search打印的结果是match对象(匹配到了一个结果)

match 尝试从字符串的首字符开始匹配,如果match没有匹配相应的结果,将会返回一个空(None)

search 尝试搜索整个字符串,直到找到第一个满足正则表达式结果,然后将结果返回回来

#例子 1

import re

s = 'A84C73D28E67'

r = re.match('\d', s)

print(r)

r1 = re.search('\d', s)

print(r1)

#执行结果

$ python2.7 o11.py

None

Step 1.把字符串首字母去掉

import re

s = '84C73D28E67'

r = re.match('\d', s)

print(r)

r1 = re.search('\d', s)

print(r1)

# 执行结果

说明:match 和search 返回的结果都是match对象

$ python2.7 o11.py

Step 2.使用group方法获取match对象的结果

import re

s = '84C73D28E67'

r = re.match('\d', s)

print(r.group())

r1 = re.search('\d', s)

print(r1.group())

#执行结果

python2.7 o11.py

8

8

Step 3. match search 与 findall 的区别

从打印结果可以看到,match search  匹配到第一个满足正则表达式结果,然后将结果返回回来

findall 匹配整个字符串,将所以匹配的结果返回回来

import re

s = '84C73D28E67'

r = re.match('\d', s)

print(r.group())

r1 = re.search('\d', s)

print(r1.group())

r2 = re.findall('\d', s)

print(r2)

#执行结果

$ python2.7 o11.py

8

8

['8', '4', '7', '3', '2', '8', '6', '7']

二.group 组

Step 1. 取一段介于life 与 python之间的字符

例子1:使用life 和python 做定界;     \w 可以匹配所有单词字符;可见打印结果报错,没有匹配到,\w只能匹配一个字符

例子2:\w* 匹配* 号前面字符0次或无限次,但打印结果仍然报错,这是因为s 字符串中有空格字符,而\w 只匹配单词字符,空格字符不在单词字符里面,所以匹配不到

例子3:  . 匹配除换行符\n之外其他所有字符,当然也包括空格字符;成功打印介于life 与 python之间的字符;虽然是匹配到了 'life is short,i use python',要求是只获取'is short,i use' 这段字符

#例子 1

import re

s = 'life is short,i use python'

r = re.search('life\wpython', s)

print(r.group())

#执行结果

$ python2.7 o12.py

Traceback (most recent call last):

File "o12.py", line 6, in

print(r.group())

AttributeError: 'NoneType' object has no attribute 'group'

#例子 2

import re

s = 'life is short,i use python'

r = re.search('life\w*python', s)

print(r.group())

#执行结果

$ python2.7 o12.py

Traceback (most recent call last):

File "o12.py", line 6, in

print(r.group())

AttributeError: 'NoneType' object has no attribute 'group'

#例子3

import re

s = 'life is short,i use python'

r = re.search('life.*python', s)

print(r.group())

#执行结果

$ python2.7 o12.py

life is short,i use python

Step 2.1 group 组概念

group组的概念:

(

'life.*python'

, s) 看似目前没有对正则表达式进行分组,但实际上就是一个分组,只没有在外面加入小括号,因为只有一个分组,可以加小括号也可以不加,加了小括号的结果和不加小括号的结果是一样的(如例子1)

group函数的是可以传入一个参数的,这个参数就是指定要获取的组号,目前在这里只有一个组可以不传,默认组号是0

#例子1

import re

s = 'life is short,i use python'

r = re.search('(life.*python)', s)

print(r.group())

#执行结果

$ python2.7 o12.py

life is short,i use python

Step 2.2 group 组概念

例子1:把 .*  使用小括号括起来,取组号0;但返回的结果仍然是s 完整的字符串

group 0是比较特殊的情况,永远记录正则表达式完整匹配,若要匹配完整结果内部的某个分组的话,要从group 1开始访问

#例子1

import re

s = 'life is short,i use python'

r = re.search('life(.*)python', s)

print(r.group(0))

#执行结果

$ python2.7 o12.py

life is short,i use python

#例子2

import re

s = 'life is short,i use python'

r = re.search('life(.*)python', s)

print(r.group(1))

#执行结果

$ python2.7 o12.py

is short,i use

#例子4

#match search 对比 findall

说明:findall 会比match search 没那么复杂

import re

s = 'life is short,i use python'

r = re.findall('life(.*)python', s)

print(r)

#执行结果

$ python2.7 o12.py

[' is short,i use ']

Step 2.3 匹配多个组

groups 会返回正则表达式内的所有分组;

import re

s = 'life is short,i use python, hello world hello python '

r = re.search('life(.*)python(.*)python', s)

print(r.groups())

#执行结果

$ python2.7 o12.py

(' is short,i use ', ', hello world hello ')

python search函数_python 正则表达式 (search与match函数)相关推荐

  1. python findall函数_python正则表达式之中的findall函数是什么?

    在这篇文章之中我们来了解一下关于python正则表达式的相关知识,有些朋友可能是刚刚接触到python这一编程语言,对这一方面不是特别的了解,在接下来这篇文章将会来带大家来了解关于正则表达式中的pyt ...

  2. python compile正则_Python 正则表达式:compile,match

    本文以匹配×××ID为例,介绍re模块的compile与match的用法 复杂匹配 = re.compile(正则表达式): 将正则表达式实例化 + re.match(要匹配的字符串): 从字符串开 ...

  3. python findall函数_Python正则表达式

    什么是正则表达式 •正则表达式是字符串处理的有力工具,比字符串自身提供的方法提供了更强大的处理功能. •例如判断一个字符串是否是合法的Email地址,可以通过构造一个规则(正则表达式),去判断字符串是 ...

  4. python正则匹配_python 正则表达式详解

    正则表达式是一个很强大的字符串处理工具,几乎任何关于字符串的操作都可以使用正则表达式来完成,作为一个爬虫工作者,每天和字符串打交道,正则表达式更是不可或缺的技能,正则表达式的在不同的语言中使用方式可能 ...

  5. python正则判断_Python 正则表达式

    一.基础语法 1.1 语法速查 1.2 最简单的正则匹配 学习正则一般是从 match 和 search 函数开始,推荐教程. match match(pattern, string) 函数会从字符串 ...

  6. python正则库_python 正则表达式第三方库 re的基本使用

    re模块简介: 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配,而re模块就是python中实现正则的模块 正则表达式简介: 非打印字符: 非打印字符也可以是正则表达 ...

  7. python compile正则_Python 正则表达式:compile

    本文以匹配×××ID为例,介绍re模块的compile与match的用法 复杂匹配 = re.compile(正则表达式): 将正则表达式实例化 + re.match(要匹配的字符串): 从字符串开 ...

  8. python函数装饰函数_Python精进-装饰器与函数对象

    本文为<爬着学Python>系列第四篇文章. 从本篇开始,本专栏在顺序更新的基础上,会有不规则的更新. 在Python的学习与运用中,我们迟早会遇到装饰器,这个概念对于初识装饰器的新手来说 ...

  9. python一共有多少个内置函数_Python 35个内置函数,你都ok吗?

    Python一共有60多个内置函数,今天先梳理其中35 个 1 abs() 绝对值或复数的模 In [1]: abs(-6) Out[1]: 6 . 2 all() 接受一个迭代器,如果迭代器的所有元 ...

  10. python中locals函数_Python神奇的内置函数locals的实例讲解

    摘要 本文我们介绍神奇的locals函数,包括动态创建变量和动态访问变量,以及一个应用场景. 相同属性不相邻问题 需求:有两个list,分别为list1和list2.list1中有n个对象,每个对象有 ...

最新文章

  1. 应用退出前不让线程切换_用户级线程和内核级线程,你分清楚了吗?
  2. jquery插件Loadmask
  3. 迁移到阿里云后,NTKO控件报存word 报文件存取错误,请检查网络传输。
  4. JVM中GC大对象配置
  5. MSIL实用指南-比较运算
  6. 索引访问方法及索引优化
  7. VBA学习_5:流程控制
  8. python字符串转换为json_在python2.7中将原始字符串转换为JSON对象
  9. 北师大版图形的旋转二教案_新北师大版八年级下册数学 《图形的旋转(2)》教案...
  10. 基于JAVA+SpringMVC+Mybatis+MYSQL的公司管理系统
  11. C#图片处理之: 另存为压缩质量可自己控制的JPEG
  12. 01组-选题与需求分析报告
  13. windows下Edge浏览器Google Chrome与Safari双向同步书签
  14. splitter将winform窗体分为三列
  15. 毕业设计-基于机器视觉的车型识别系统
  16. 问题1053:素数回文
  17. HTTP笔记1:网络模型与TCP协议
  18. i7 10700k和i9 9900k对比哪个好
  19. 教你一分钟实现动态模糊效果
  20. Java adt 国内更新_Adt-Bundle的下载与Android版本的更新

热门文章

  1. linux系统文件夹(转)
  2. 金额转大写java实现
  3. 汇编语言小写字母转大写字母
  4. 教程—— 微信公众号如何接入客服系统
  5. Python 京东抢购茅台脚本(亲测可用),github脚本24小时内删除
  6. mybatis中大于小于号转义字符
  7. DP转HDMI/VGA方案设计电路图参考|AG6320参考电路原理图PCB电路图
  8. Lucene实现全文检索
  9. #bfs#[luogu 2873] [USACO07DEC]泥水坑Mud Puddles
  10. React之Hook(四)——使用 Effect Hook