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的更多相关文章

  1. Python里面search()和match()的区别?

    match()函数只检测RE是不是在string的开始位置匹配,search()会扫描整个string查找匹配, 也就是说match()只有在0位置匹配成功的话才有返回,如果不是开始位置匹配成功的话, ...

  2. Python里面search()和match()的区别

    转自https://www.cnblogs.com/aaronthon/p/9435967.html match()函数只检测字符串开头位置是否匹配,匹配成功才会返回结果,否则返回None searc ...

  3. python正则表达式基础,以及pattern.match(),re.match(),pattern.search(),re.search()方法的使用和区别

    正则表达式(regular expression)是一个特殊的字符序列,描述了一种字符串匹配的模式,可以用来检查一个字符串是否含有某种子字符串. 将匹配的子字符串替换或者从某个字符串中取出符合某个条件 ...

  4. python正则表达式模块re:正则表达式常用字符、常用可选标志位、group与groups、match、search、sub、split,findall、compile、特殊字符转义

    本文内容: 正则表达式常用字符. 常用可选标志位. group与groups. match. search. sub. split findall. compile 特殊字符转义 一些现实例子 首发时 ...

  5. 第11.3节 Python正则表达式搜索支持函数search、match、fullmatch、findall、finditer

    一. 概述 re模块的函数search.match.fullmatch.findall.finditer都是用于搜索文本中是否包含指定模式的串,函数的参数都是一样的,第一个参数是模式串.第二个是搜索文 ...

  6. python正则表达式详解之Match类及其方法

    1.Match对象简介 match对象通常是由正则表达式对象的match 方法,search 方法等经过匹配之后而产生.可以直接当做bool值使用,如果匹配则相当于True, 如果不匹配,则返回Non ...

  7. Boost正则表达式库regex常用search和match示例 - 编程语言 - 开发者第2241727个问答

    Boost正则表达式库regex常用search和match示例 - 编程语言 - 开发者第2241727个问答 Boost正则表达式库regex常用search和match示例 发表回复   Boo ...

  8. Python正则表达式re.match(r"(..)+", "a1b2c3")匹配结果为什么是”c3”?

    在才开始学习正则表达式处理时,老猿对正则表达式:re.match(r"(-)+", "a1b2c3") 返回的匹配结果为"c3"没有理解,学 ...

  9. Python的re模块中search与match的区别

    1.search和match: search:在整个字符中匹配,如果找不到匹配的就返回None match:在字符串开始位置匹配如果不匹配就返回None 2.效率对比: search: match:

随机推荐

  1. Linux中ext2文件系统的结构

    1.ext2产生的历史 最早的Linux内核是从MINIX系统过渡发展而来的.Linux最早的文件系统就是MINIX文件系统.MINIX文件系统几乎到处都是bug,采用的是16bit偏移量,最大容量为 ...

  2. 让最新的 Android Q Beta 3 强制重启的 Project Mainline,到底是什么?

    一. 序 最新的 Android 版本 Q,已经发布了 Android Q Beta 3,虽然没有正式发布,但是不少用户已经加入了测试计划,抢先体验 Android Q 的新功能. 近期不少体验用户反 ...

  3. [知乎作答]·关于在Keras中多标签分类器训练准确率问题

    [知乎作答]·关于在Keras中多标签分类器训练准确率问题 本文来自知乎问题 关于在CNN中文本预测sigmoid分类器训练准确率的问题?中笔者的作答,来作为Keras中多标签分类器的使用解析教程. ...

  4. 排序算法对比,步骤,改进,java代码实现

    前言 发现是时候总结一番算法,基本类型的增删改查的性能对比,集合的串并性能的特性,死记太傻了,所以还是写在代码里,NO BB,SHOW ME THE CODE! github地址:https://gi ...

  5. Java学习笔记--字符串和文件IO

    1.Java中的字符串类和字符的表示 2.区分String,StringBuilder和StringBuffer 3.从命令行中给main方法传递参数 4.文件操作 1 Java中的字符串和字符 1. ...

  6. Js常见算法实现汇总

    /*去重*/ <script> function delRepeat(arr){ var newArray=new Array(); var len=arr.length; for(var ...

  7. 移动端,点击a标签链接的pdf报错 Resource interpreted as Document but transferred with MIME type application/pdf

    源码: <a href="11.pdf" class="actcont_a fl report_a" style="display: block ...

  8. HDU 2191 悼念汶川地震(多重背包)

    思路: 多重背包转成01背包,怎么转?把一种大米看成一堆单个的物品,每件物品要么装入,要么不装.复杂度比01背包要大.时间复杂度为O(vns)(这里S是所有物品的数量s之和).这个做法太粗糙了,但就是 ...

  9. LeetCode Remove Duplicates from Sorted Array II 删除整型数组中的重复元素并返回剩下元素个数2

    class Solution { public: int removeDuplicates(int A[], int n) { ],*e=&A[]; //s指向“连续数字”的第一个,e往后遍历 ...

  10. 洛谷 P1951 收费站_NOI导刊2009提高(2)

    题目描述 在某个遥远的国家里,有n个城市.编号为1,2,3,…,n. 这个国家的政府修建了m条双向的公路.每条公路连接着两个城市.沿着某条公路,开车从一个城市到另一个城市,需要花费一定的汽油. 开车每 ...