码迷,mamicode.com
首页 > 编程语言 > 详细

Python的学习之旅———re 模块正则表达式

时间:2017-10-27 23:05:36      阅读:414      评论:0      收藏:0      [点我收藏+]

标签:ext   man   str   blog   情况   div   next   group   表达   

#重复匹配:. [] ? * + {}

?:左边那个字符出现0次或1次

print(re.findall(‘ab?‘,‘a ab abb abbb abbbbbb‘))
print(re.findall(‘ab{0,1}‘,‘a ab abb abbb abbbbbb‘))

*:左边那个字符出现0次或无穷次

print(re.findall(‘ab*‘,‘a ab abb abbb abbbbbb abbc123bbbb‘))
print(re.findall(‘ab{0,}‘,‘a ab abb abbb abbbbbb abbc123bbbb‘))

+:左边那个字符出现1次或无穷次

re.findall(‘ab+‘,‘a ab abb abbb abbbbbb abbc123bbbb‘)
re.findall(‘ab{1,}‘,‘a ab abb abbb abbbbbb abbc123bbbb‘)

贪婪匹配:.*
print(re.findall(‘a.*b‘,‘a123b456b‘))

非贪婪匹配:.*?
print(re.findall(‘a.*?b‘,‘a123b456b‘))

分组:()

print(re.findall(‘<imag href=\"(.*)\" />‘,
‘<h1>hello</h1><a href="http://www.baidu.com"></a><imag href="http://www.baidu.com/a.jpg" />‘))

只留下组内的内容

print(re.findall(‘<imag href=\"(?:.*)\" />‘,
‘<h1>hello</h1><a href="http://www.baidu.com"></a><imag href="http://www.baidu.com/a.jpg" />‘))
| 管道符
print(re.findall(‘compan(?:ies|y)‘,‘Too many companies have gone bankrupt, and the next one is my company‘))

注意:

在python中使用正则表达式,会先被python式识别一次。(也就是会先消耗一次\)

print(re.findall(‘a\\\\c‘,‘a\c a12 a2c‘)) #‘a\\c‘   所以要想多写两个
print(re.findall(r‘a\\c‘,‘a\c a12 a2c‘)) #‘a\\c‘

 

 1 #为何同样的表达式search与findall却有不同结果:
 2 print(re.search(\(([\+\-\*\/]*\d+\.?\d*)+\),"1-12*(60+(-40.35/5)-(-4*3))").group()) #(-40.35/5)
 3 print(re.findall(\(([\+\-\*\/]*\d+\.?\d*)+\),"1-12*(60+(-40.35/5)-(-4*3))")) #[‘/5‘, ‘*3‘]
 4 
 5 #看这个例子:(\d)+相当于(\d)(\d)(\d)(\d)...,是一系列分组
 6 print(re.search((\d)+,123).group()) #group的作用是将所有组拼接到一起显示出来
 7 print(re.findall((\d)+,123)) #findall结果是组内的结果,且是最后一个组的结果
 8  对于这种情况 取了3次值 
 9 分别是  ‘1’   ‘ 2’    ‘310 最后就显示了 3 这个数字 

 





 

Python的学习之旅———re 模块正则表达式

标签:ext   man   str   blog   情况   div   next   group   表达   

原文地址:http://www.cnblogs.com/surehunter/p/7735595.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!