re模块提供了3个方法对输入的字符串进行确切的查询,match和search最多只会返回一个匹配条件的子串,可以理解为非贪婪模式,而findall会返回N个匹配条件的子串,可以理解为贪婪模式

re.match()

re.search()

re.findall()

#match()方法的工作方式是只有当被搜索字符串的开头匹配模式的时候它才能查找到匹配对象,match返回的是对象,对象里面包含了很多信息

match=re.match(r'dog','dog cat dog') #只要匹配到满足条件的就不匹配了
print match.group(0) #dog
print match.start() #0
print match.end() #3
match=re.match(r'cat','dog cat dog')
print type(match) #<type 'NoneType'> #因为cat没有在字符串的开头,所以没有匹配到

  #search()方法和match()类似,不过search()方法不会限制我们只从字符串的开头查找匹配,它匹配子串,直到匹配到为止或者字符串结束为止

match=re.search(r'cat','dog cat dog')
print match.group(0) #cat,如果不分组,默认就是第0组
print match.start() #4
print match.end() #7

  #findall返回的是列表

match=re.findall(r'dog', 'dog cat dog') #匹配是整个字符串,每个子串都要匹配,匹配到的字符串剔除,后面的字符串要继续匹配正则条件,直到字符串的结尾,有多少匹配多少
print match #['dog', 'dog']

  #使用 mathch.group 分组使用(),分组和不分组匹配的"大子串"都是一样,但是分组之后,可以对这些子组做单独处理。

contactInfo = 'Doe, John: 555-1212'
match=re.search(r'\w+, \w+: \S+', contactInfo)
print match.group(0) #Doe, John: 555-1212
match = re.search(r'(\w+), (\w+): (\S+)', contactInfo)
print match.group(0) #Doe, John: 555-1212,第0组表示匹配的"大子串",满足全部条件
print match.group(1) #Doe
print match.group(2) #John
print match.group(3) #555-1212

  #当一个正则表达式有很多分组的时候,通过组的出现次序来定位就会变的不现实。Python还允许你通过下面的语句来指定一个组名:

match = re.search(r'(?P<last>\w+), (?P<first>\w+): (?P<phone>\S+)', contactInfo)
print match.group('last') #Doe
print match.group('first') #John
print match.group('phone') #555-1212

  #尽管findall()方法不返回分组对象,它也可以使用分组。类似的,findall()方法将返回一个元组的集合,其中每个元组中的第N个元素对应了正则表达式中的第N个分组。

match=re.findall(r'\w+, \w+: \S+', contactInfo)
print match #['Doe, John: 555-1212']

  

match=re.findall(r'(\w+), (\w+): (\S+)', contactInfo)
print match #[('Doe', 'John', '555-1212')]

  

Python开发应用-正则表达进行排序搜索的更多相关文章

  1. python的正则表达一

    一.常用的正则表达式 1.了解正则表达式 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种 ...

  2. Python的正则表达概述

    本文介绍了Python对于正则表达式的支持,包括正则表达式基础以及Python正则表达式标准库的完整介绍及使用示例.本文的内容不包括如何编写高效的正则表达式.如何优化正则表达式,这些主题请查看其他教程 ...

  3. python——字符串 & 正则表达

    raw字符串(原始字符串) 所见即所得,例如r''My's\n'' Python转义字符 在需要在字符中使用特殊字符时,python用反斜杠(\)转义字符.如下表: 转义字符 描述 \(在行尾时) 续 ...

  4. python 利用正则表达的式提取特定数据如手机号

    import re file=open('1.txt','r') listfile=file.readlines() listfile=','.join(listfile)#合并文本 listfile ...

  5. Python之面向对象和正则表达(代数运算和自动更正)

    面向对象 一.概念解释 面对对象编程(OOP:object oriented programming):是一种程序设计范型,同时也是一种程序开发的方法,实现OOP的程序希望能够在程序中包含各种独立而又 ...

  6. python 正则表达提取方法 (提取不来的信息print不出来 加个输出type 再print信息即可)

    1,正则表达提取 (findall函数提取) import re a= "<div class='content'>你大爷</div>"x=re.finda ...

  7. python——re模块(正则表达)

    python——re模块(正则表达) 两个比较不错的正则帖子: http://blog.csdn.net/riba2534/article/details/54288552 http://blog.c ...

  8. Python排序搜索基本算法之归并排序实例分析

    Python排序搜索基本算法之归并排序实例分析 本文实例讲述了Python排序搜索基本算法之归并排序.分享给大家供大家参考,具体如下: 归并排序最令人兴奋的特点是:不论输入是什么样的,它对N个元素的序 ...

  9. 【python】Leetcode每日一题-搜索排序数组2

    [python]Leetcode每日一题-搜索排序数组2 [题目描述] 已知存在一个按非降序排列的整数数组 nums ,数组中的值不必互不相同. 在传递给函数之前,nums 在预先未知的某个下标 k( ...

随机推荐

  1. mongodb 分组求最大值

    先上代码 db.getCollection("playback").aggregate([ {$match:{"game_record_id":{$in:[68 ...

  2. ThinkPHP3开发模式,控制器操作,配置文件,框架语法

    ThinkPHP的开发模式 tp框架有两种使用模式:开发模式(调试模式),一种是生产模式(运行模式) define('APP_DEBUG', true);  //调试模式 define('APP_DE ...

  3. org.apache.hadoop.conf.Configuration无法引用 解决方法

    我用的是Hadoop-common 2.6.4jar,可是明明包里面有这个类却引用不了,然后我看了下包里面是一个抽象类......................................... ...

  4. day17——序列化、os、sys、hashlib、collections

    day17 序列化 json 两组4个方法: 1.dumps(序列化) -- loads(反序列) dumps(list):将对象转换成字符串 loads(str):将字符串转换成对象 list--s ...

  5. 【Linux】Ubuntu替换阿里源

    --------------------------------------------------------- 参考文章:https://www.jianshu.com/p/97c35d569aa ...

  6. GridControl单元格编辑验证的方法

    本文实例演示了DevExpress实现GridControl单元格编辑验证的方法,比较实用的功能,具体方法如下: 主要功能代码如下: /// <summary> /// 自定义单元格验证 ...

  7. elasticsearch配置文件中http.cors.x字段有哪些用途和用法

    http.cors.enabled 是否支持跨域,默认为false http.cors.allow-origin 当设置允许跨域,默认为*,表示支持所有域名,如果我们只是允许某些网站能访问,那么可以使 ...

  8. 解决本地Bootstrap字体图标不可见的问题

    原文:https://www.jianshu.com/p/70ac459d33e7 作为Bootstrap的初学者,我最近遇到了一个问题:在使用Bootstrap字体图标时,图标不可见.使用代码如下: ...

  9. C# DataTable、DataSet、List、相互转换

      DataTable转LIst /// <summary> /// 利用反射将DataTable转换为List<T>对象 /// </summary> /// & ...

  10. Java之路---Day05

    2019-10-19-21:09:31 面向对象的封装性 封装性 概念:封装就是将一些细节信息隐藏起来,对于外界不可见 面向对象封装性在Java中的体现 1.方法就是一种封装 public class ...