代码:

#!/usr/bin/python
import re
line = "Cats are smarter than dogs"
matchObj = re.match( r'(.*) are (.*?) .*', line, re.M|re.I)
if matchObj:
print "matchObj.group() : ", matchObj.group()
print "matchObj.group(1) : ", matchObj.group(1)
print "matchObj.group(2) : ", matchObj.group(2)
else:
print "No match!!"

以上实例执行结果如下:
matchObj.group() : Cats are smarter than dogs
matchObj.group(1) : Cats
matchObj.group(2) : smarter

主要解释下  r'(.*) are (.*?) .*'

首先,这是一个字符串,前面的一个r表示字符串为非转义的原始字符串,让编译器忽略反斜杠,也就是忽略转义字符。但是这个字符串里没有反斜杠,所以这个r可有可无。

  1. (.*) 第一个匹配分组,   .*  代表匹配除换行符之外的所有字符,即任意字符即可

  2. (.*?)第二个匹配分组,.*?后面多个问号,代表非贪婪模式,也就是说只匹配符合条件的最少字符

  3. 后面的一个.*  没有括号包围,所以不是分组,匹配效果和第一个一样,但是不计入匹配结果中,只有加括号的才会返回到匹配结果中

matchObj.group() 等同于 matchObj.group(0),表示匹配到的完整文本字符

matchObj.group(1) 得到第一组匹配结果,也就是(.*)匹配到的

matchObj.group(2) 得到第二组匹配结果,也就是(.*?)匹配到的

这里对新手还有个问题,matchObj.group(3)会报错,因为只有匹配结果中只有两组,所以填3时会报错。

下面是修改后的代码  ,一看便懂

#!/usr/bin/python
import re
line = "Cats are smarter than dogs hahaha"
matchObj = re.match(r'(.*) are (.*?) than (.*) ha', line, re.M | re.I)
if matchObj:print "matchObj.group() : ", matchObj.group()print "matchObj.group(1) : ", matchObj.group(1)print "matchObj.group(2) : ", matchObj.group(2)print "matchObj.group(3) : ", matchObj.group(3)
else:print "No match!!"

结果:

D:\python\python.exe D:/pycharm/workspace/test01.py
matchObj.group() :  Cats are smarter than dogs ha
matchObj.group(1) :  Cats
matchObj.group(2) :  smarter
matchObj.group(3) :  dogs

Pytho正则表达式-match相关推荐

  1. java match正则不生效_[Java教程]正则表达式match()函数

    [Java教程]正则表达式match()函数 0 2015-09-26 12:00:31 正则表达式match()函数: 此方法可在字符串内查找一个或多个正则表达式的匹配. 返回值是一个数组,但是此数 ...

  2. python中search和match的区别_Python中正则表达式match()、search()函数及match()和search()的区别详解...

    match()和search()都是python中的正则匹配函数,那这两个函数有何区别呢? match()函数只检测RE是不是在string的开始位置匹配, search()会扫描整个string查找 ...

  3. python正则表达式match,search,find的使用方法

    1.使用match()匹配字符串: match()函数试图从字符串的开始部分对模式进行匹配, 匹配对象的group()方法能够用于显示那个成功的匹配. >>>import re &g ...

  4. 正则表达式match和group的区别 具有相同模式的字符串使用组的提取案例及原理

    一.案例: Match类 示例:查找出字符串中包含的url string text = "FirstUrl: http://www.sohu.com ,SecondUrl: http://w ...

  5. python search返回值_python正则表达式--match search方法

    1.re.match函数 re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回None. (1)函数语法: re.match(pattern,str ...

  6. awk根据正则表达式match截取字符串

    变量:testStr = "dt='2019-05-14 00%3A00%3A00.0',file='logserver11-00-00'" 目的效果:取出2019-05-14 0 ...

  7. Python:正则表达式match、search、findall、finditer区别,group()、groups()与group(index)的区别

    1.match re.match(pattern, string[, flags]) 从首字母开始开始匹配,string如果包含pattern子串,则匹配成功,返回Match对象,失败则返回None, ...

  8. Python 正则表达式 match、findall、search

    今天在练习爬虫的时候,居然发现不会用python正则提取数据,特地来总结一下python的常用三个数据提取函数 先来看一下 match 和 search 的区别:match 并不会扫描整个字符串,只会 ...

  9. vb.net 正则 替换 第n个_Python中正则表达式模块详解

    作者:python来源:SegmentFault 思否社区 正则表达式用来处理字符串,对字符串进行检索和替换,另外正则在python爬虫的应用也是相当广泛! 特点 灵活性.逻辑性和功能性非常强 可以迅 ...

最新文章

  1. b500k电位器引脚接法_可调电位器实物接线图及接线方法详解
  2. springmvc返回数据中文乱码
  3. rust怎么不要的墙拆掉_封阳台,栏杆要不要拆掉?栏杆装在玻璃窗里面还是外面...
  4. hive读取hdfs存放文件_数据获取层之Flume快速入门(一) 实时监控单个追加文件
  5. 【Android】Android Studio打包生成正式签名的APK
  6. socketio mysql_socket.io 在java与微信小程序上的应用
  7. 感谢贫穷,是贫穷限制了人们的善良
  8. 本地自旋锁与信号量/多服务台自旋队列-spin wait风格的信号量
  9. Mapbar 地图 API 概念   技术文档
  10. 撩开云计算神秘面纱之阿里云弹性计算服务篇
  11. AO*算法详解,附例子和算法详细步骤
  12. Python调用微博API
  13. [转]欧洲航天局计划于2018年登月寻水
  14. CentOS 8 下载及安装
  15. 揭秘有状态服务上 Kubernetes 的核心技术
  16. Lucas-Kanade稀疏光流法
  17. mysql大于、小于符号的两种表示方法
  18. 【代码超详解】LightOJ 1197 Help Hanzo(区间质数筛法)
  19. 苹果手机白屏_安卓卡顿苹果闪退,手机换代的动力原来是这些
  20. java 家庭电视类_Java-家中的电视机

热门文章

  1. iOS上相见恨晚的6个APP
  2. 针对SSL/TLS的拒绝服务攻击以及使用ettercap进行DNS欺骗
  3. 13-3 14 NFS
  4. Mybatis中的collection、association来处理结果映射
  5. Java中对象的深克隆和浅克隆
  6. 高级特性(2)- XML
  7. UVa 11388 - GCD LCM
  8. Spring AOP之ThrowsAdvice
  9. CSMAR database query sample
  10. what you want from a relationship?