Python 正则表达式 search vs match
search()和match()函数都是正则表达式中的匹配函数,二者有何区别呢?
1、match()从string的开始位置进行正则匹配,即从0位置开始匹配,若匹配上则返回一个match对象,否则返回none
import re
m=re.match('\d{3}-\d{3}-\d{4}','My home phone number is 456-963-1125,My office number is 456-639-1125')
if m:
print(m.group(0))
else:
print('not matched') 运行结果是 not matched
2、search()函数扫描整个string,寻找第一个正则匹配的位置,若找到,则返回一个match对象,否则返回none,同样是上面的例子,使用search()函数运行
import re
m=re.search('\d{3}-\d{3}-\d{4}','My home phone number is 456-963-1125,My office number is 456-639-1125')
if m:
print(m.group(0))
else:
print('not matched') 运行结果是 456-963-1125
3、可以在正则表达式前加^来强制search()函数从头开始匹配
import re
m=re.search('^\d{3}-\d{3}-\d{4}','My home phone number is 456-963-1125,My office number is 456-639-1125')
if m:
print(m.group(0))
else:
print('not matched') 运行结果是 not matched
4、MULTILINE模式下,match()函数只在第一行的string中进行匹配,而加了^限制的search()函数会在多行进行匹配
m=re.match('X', 'A\nB\nX', re.MULTILINE)
if m:
print(m.group(0))
else:
print('not matched') 运行结果是 not matched
m=re.search('^X', 'A\nB\nX', re.MULTILINE)
if m:
print(m.group(0))
else:
print('not matched') 运行结果是 X 除了match()和search()外,findall()方法将返回被查找字符串中的所有匹配 1、如果调用在一个没有分组的表达式上,将返回一个匹配字符串列表
>>>
>>> phoneNumRegex=re.compile(r'\d{3}-\d{3}-\d{4}')
>>> phoneNumRegex.findall('Home:021-364-8975 Office:021-876-6934')
['021-364-8975', '021-876-6934']
>>>
2、如果调用在一个有分组的表达式上,将返回一个匹配字符串的元组的列表
>>>
>>> phoneNumRegex=re.compile(r'(\d{3})-(\d{3}-\d{4})')
>>> phoneNumRegex.findall('Home:021-364-8975 Office:021-876-6934')
[('021', '364-8975'), ('021', '876-6934')]
>>>
3、如果没有字符串中没有相应的匹配,将会返回一个空列表
>>>
>>> phoneNumRegex=re.compile(r'\d{3}-\d{3}-\d{4}')
>>> phoneNumRegex.findall('Home:021-364-897 Office:021-876-693')
[]
>>>
Python 正则表达式 search vs match的更多相关文章
- Python里面search()和match()的区别?
match()函数只检测RE是不是在string的开始位置匹配,search()会扫描整个string查找匹配, 也就是说match()只有在0位置匹配成功的话才有返回,如果不是开始位置匹配成功的话, ...
- Python里面search()和match()的区别
转自https://www.cnblogs.com/aaronthon/p/9435967.html match()函数只检测字符串开头位置是否匹配,匹配成功才会返回结果,否则返回None searc ...
- python正则表达式基础,以及pattern.match(),re.match(),pattern.search(),re.search()方法的使用和区别
正则表达式(regular expression)是一个特殊的字符序列,描述了一种字符串匹配的模式,可以用来检查一个字符串是否含有某种子字符串. 将匹配的子字符串替换或者从某个字符串中取出符合某个条件 ...
- python正则表达式模块re:正则表达式常用字符、常用可选标志位、group与groups、match、search、sub、split,findall、compile、特殊字符转义
本文内容: 正则表达式常用字符. 常用可选标志位. group与groups. match. search. sub. split findall. compile 特殊字符转义 一些现实例子 首发时 ...
- 第11.3节 Python正则表达式搜索支持函数search、match、fullmatch、findall、finditer
一. 概述 re模块的函数search.match.fullmatch.findall.finditer都是用于搜索文本中是否包含指定模式的串,函数的参数都是一样的,第一个参数是模式串.第二个是搜索文 ...
- python正则表达式详解之Match类及其方法
1.Match对象简介 match对象通常是由正则表达式对象的match 方法,search 方法等经过匹配之后而产生.可以直接当做bool值使用,如果匹配则相当于True, 如果不匹配,则返回Non ...
- Boost正则表达式库regex常用search和match示例 - 编程语言 - 开发者第2241727个问答
Boost正则表达式库regex常用search和match示例 - 编程语言 - 开发者第2241727个问答 Boost正则表达式库regex常用search和match示例 发表回复 Boo ...
- Python正则表达式re.match(r"(..)+", "a1b2c3")匹配结果为什么是”c3”?
在才开始学习正则表达式处理时,老猿对正则表达式:re.match(r"(-)+", "a1b2c3") 返回的匹配结果为"c3"没有理解,学 ...
- Python的re模块中search与match的区别
1.search和match: search:在整个字符中匹配,如果找不到匹配的就返回None match:在字符串开始位置匹配如果不匹配就返回None 2.效率对比: search: match:
随机推荐
- UVA - 12333 Revenge of Fibonacci 高精度加法 + 字典树
题目:给定一个长度为40的数字,问其是否在前100000项fibonacci数的前缀 因为是前缀,容易想到字典树,同时因为数字的长度只有40,所以我们只要把fib数的前40位加入字典树即可.这里主要讨 ...
- (转)Linux 文件和目录的属性
linux 文件属性与权限 原文:https://www.cnblogs.com/kzloser/articles/2673790.html https://www.cnblogs.com/danh/ ...
- Django学习笔记(13)——Django的用户认证(Auth)组件,视图层和QuerySet API
用户认证组件的学习 用户认证是通过取表单数据根数据库对应表存储的值做比对,比对成功就返回一个页面,不成功就重定向到登录页面.我们自己写的话当然也是可以的,只不过多写了几个视图,冗余代码多,当然我们也可 ...
- Windows安全认证是如何进行的?[NTLM篇]
<上篇>中我们介绍Kerberos认证的整个流程.在允许的环境下,Kerberos是首选的认证方式.在这之前,Windows主要采用另一种认证协议——NTLM(NT Lan Manager ...
- SpringBoot | 第十章:Swagger2的集成和使用
前言 前一章节介绍了mybatisPlus的集成和简单使用,本章节开始接着上一章节的用户表,进行Swagger2的集成.现在都奉行前后端分离开发和微服务大行其道,分微服务及前后端分离后,前后端开发的沟 ...
- SpringBoot | 第三章:springboot配置详解
基于springboot的约定优于配置的原则,在多数情况下,启动一个应用时,基本上无需做太多的配置,应用就能正常启动.但在大部分开发环境下,添加额外配置是无所避免的,比如自定义应用端口号(比较在机器比 ...
- Golang自带的http包的路由规则问题
1.调用下面的方法开启一个http监听服务http.HandleFunc("/hello/", helloHandler)err := http.ListenAndServe(&q ...
- Flask蓝图的增删改查
怎样用flask蓝图来实现增删改查呢?请看下面的内容 这是我们的目录结构 从图中可以看出每一个功能都有一个各自的文件夹 首先我们要自己先来创建一个数据,在Flask_data.py中写入如下内容: S ...
- System Center Configuration Manager 2016 域准备篇(Part1)
本系列指南如何从Microsoft安装最新的Configuration Manager基准版本.较新的可用基准版本System Center Configuration Manager(当前分支)版本 ...
- cesium 加载TMS影像(已经切片)
TMS影像数据格式 加载影像的代码: var layers = viewer.scene.imageryLayers; var blackMarble = layers.addImageryProvi ...