python search函数_python 正则表达式 (search与match函数)
一. 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函数)相关推荐
- python findall函数_python正则表达式之中的findall函数是什么?
在这篇文章之中我们来了解一下关于python正则表达式的相关知识,有些朋友可能是刚刚接触到python这一编程语言,对这一方面不是特别的了解,在接下来这篇文章将会来带大家来了解关于正则表达式中的pyt ...
- python compile正则_Python 正则表达式:compile,match
本文以匹配×××ID为例,介绍re模块的compile与match的用法 复杂匹配 = re.compile(正则表达式): 将正则表达式实例化 + re.match(要匹配的字符串): 从字符串开 ...
- python findall函数_Python正则表达式
什么是正则表达式 •正则表达式是字符串处理的有力工具,比字符串自身提供的方法提供了更强大的处理功能. •例如判断一个字符串是否是合法的Email地址,可以通过构造一个规则(正则表达式),去判断字符串是 ...
- python正则匹配_python 正则表达式详解
正则表达式是一个很强大的字符串处理工具,几乎任何关于字符串的操作都可以使用正则表达式来完成,作为一个爬虫工作者,每天和字符串打交道,正则表达式更是不可或缺的技能,正则表达式的在不同的语言中使用方式可能 ...
- python正则判断_Python 正则表达式
一.基础语法 1.1 语法速查 1.2 最简单的正则匹配 学习正则一般是从 match 和 search 函数开始,推荐教程. match match(pattern, string) 函数会从字符串 ...
- python正则库_python 正则表达式第三方库 re的基本使用
re模块简介: 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配,而re模块就是python中实现正则的模块 正则表达式简介: 非打印字符: 非打印字符也可以是正则表达 ...
- python compile正则_Python 正则表达式:compile
本文以匹配×××ID为例,介绍re模块的compile与match的用法 复杂匹配 = re.compile(正则表达式): 将正则表达式实例化 + re.match(要匹配的字符串): 从字符串开 ...
- python函数装饰函数_Python精进-装饰器与函数对象
本文为<爬着学Python>系列第四篇文章. 从本篇开始,本专栏在顺序更新的基础上,会有不规则的更新. 在Python的学习与运用中,我们迟早会遇到装饰器,这个概念对于初识装饰器的新手来说 ...
- python一共有多少个内置函数_Python 35个内置函数,你都ok吗?
Python一共有60多个内置函数,今天先梳理其中35 个 1 abs() 绝对值或复数的模 In [1]: abs(-6) Out[1]: 6 . 2 all() 接受一个迭代器,如果迭代器的所有元 ...
- python中locals函数_Python神奇的内置函数locals的实例讲解
摘要 本文我们介绍神奇的locals函数,包括动态创建变量和动态访问变量,以及一个应用场景. 相同属性不相邻问题 需求:有两个list,分别为list1和list2.list1中有n个对象,每个对象有 ...
最新文章
- 应用退出前不让线程切换_用户级线程和内核级线程,你分清楚了吗?
- jquery插件Loadmask
- 迁移到阿里云后,NTKO控件报存word 报文件存取错误,请检查网络传输。
- JVM中GC大对象配置
- MSIL实用指南-比较运算
- 索引访问方法及索引优化
- VBA学习_5:流程控制
- python字符串转换为json_在python2.7中将原始字符串转换为JSON对象
- 北师大版图形的旋转二教案_新北师大版八年级下册数学 《图形的旋转(2)》教案...
- 基于JAVA+SpringMVC+Mybatis+MYSQL的公司管理系统
- C#图片处理之: 另存为压缩质量可自己控制的JPEG
- 01组-选题与需求分析报告
- windows下Edge浏览器Google Chrome与Safari双向同步书签
- splitter将winform窗体分为三列
- 毕业设计-基于机器视觉的车型识别系统
- 问题1053:素数回文
- HTTP笔记1:网络模型与TCP协议
- i7 10700k和i9 9900k对比哪个好
- 教你一分钟实现动态模糊效果
- Java adt 国内更新_Adt-Bundle的下载与Android版本的更新