ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python 的正则表达式

2020-07-20 11:03:55  阅读:277  来源: 互联网

标签:searchObj group re python matchObj 正则表达式 print 匹配


学习过程中看到了这个例子,查了一下r'(.*) are (.*?) .*'的解释:

实例 2:

#!/usr/bin/python3

import re

line = "Cats are smarter than dogs";

searchObj = re.search( r'(.*) are (.*?) .*', line, re.M|re.I)

if searchObj:
   print ("searchObj.group() : ", searchObj.group())
   print ("searchObj.group(1) : ", searchObj.group(1))
   print ("searchObj.group(2) : ", searchObj.group(2))
else:
   print ("Nothing found!!")

以上实例执行结果如下:

searchObj.group() :  Cats are smarter than dogs
searchObj.group(1) :  Cats
searchObj.group(2) :  smarter

 

r'(.*) are (.*?) .*'

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


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

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

后面的一个.*  没有括号包围,所以不是分组,匹配效果和第一个一样,但是不计入匹配结果中。


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

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

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


因为只有匹配结果中只有两组,所以填3时会报错。

标签:searchObj,group,re,python,matchObj,正则表达式,print,匹配
来源: https://www.cnblogs.com/haili-zheng/p/13343888.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有