标签:内容 .net space adk 队列 ret smi 使用技巧 data-
正則表達式的用途能够理解为找出规律同样的一类东西。能够是当中一个,也能够是全部的。
比如:
password:hadkfalifexxIxxfasdjifja134xxlovexx23345sdfxxyouxx8dfse
解密:I love you
解密方法:找规律 xx须要的内容xx
. : 匹配随意字符。换行符\n除外
* :匹配前一个字符0次或无限次
? :匹配前一个字符0次或1次
.*:贪心算法 就像是一个胖子吃尽可能多的东西
.*?
:非贪心算法 就像是一个婴儿少量多餐
():括号内的数据作为结果返回
a = ‘xyz123‘ b = re.findall(‘x.‘,a) print b #输出是xy a = ‘xyz123‘ b = re.findall(‘x..‘,a) print b #输出是xyz #因此我们能够把.理解为占位符
a = ‘xyxy123‘ b = re.findall(‘x*‘,a) print b #[‘x‘,‘‘,‘x‘,‘‘,‘‘,‘‘,‘‘,‘‘]注意,最后面多了一个空 #*匹配前一个元素0次或多次。如果匹配0次,那么‘x*‘就仅仅剩下‘x‘,那么就会在a字符串里面寻找x,在第一、第三位置。找不到就是空 #留给大家一个问题。为什么最后面会多一个‘’,知道的请在后面评论中写下。由于我并不知道<img alt="微笑" src="http://static.blog.csdn.net/xheditor/xheditor_emot/default/smile.gif" />3.?的使用 匹配前一个字符0次或1次
a = ‘xy123‘ b = re.findall(‘x?‘,a) print b #[‘x‘,‘‘,‘‘,‘‘,‘‘,‘‘]注意,这里也跟上面一样。最后面多了一个‘‘ #由于?匹配前面一个元素0次或1次。当匹配1次时,‘x?‘就变成‘x’,那么会去a中找x,找不到就为空由于单个用的并不多。仅仅需掌握(.*?)这样的组合方式
secret_code = hadkfalifexxIxxfasdjifja134xxlovexx23345sdfxxyouxx8dfse b = re.findall(‘xx.*xx‘,secret_code) print b #[‘xxIxxfasdjifjal34xxlovexx23345sdfxxyouxx‘] #像一个胖子尽可能的多吃2..*?的使用
c = re.findall(‘xx.*?xx‘,secret_code) print c #[‘xxIxx‘,‘xxlovexx‘,‘xxyouxx‘] #首先要满足条件,然后尽可能多的找满足条件的组合,即‘少量多餐’
d = re,findall(‘xx(.*?)xx‘.secret_code) print d for each in d: print each #[‘I‘,‘love‘,‘you‘] #I love you,课件()能够返回我们须要的内容,而不包括多余的元素
s = ‘‘‘sdfxxhello xxfsdfxxworldxxasdf‘‘‘ d = re.findall(‘xx(.*?)xx‘,s,re.S) print d #当去掉re.S 时会打印[‘fsdf‘] 由于.不能匹配\n #加上re.S则[‘hello\n‘,‘world‘],因此我们知道。re.S就是让点的作用范围能包含\n能够去Python正則表達式的库文件里查找对S的定义
s2 = ‘asdfxxIxx123xxlovexxdfd‘ f = re.search(‘xx(.*?)xx123xx(.*?)xx‘,s2).group(1) print f #I #假设是2,love f2 = re.findall(‘xx(.*?)xx123xx(.*?)xx‘,s2) print f2[0][1]
#love#自己能够调试来理解,f2是个队列,有一个元素,可是这个元素是个元组,仅仅有当非常长的字符串,有两个地方满足规律时。才会有两个元素
s = ‘123asdfga123‘ output = re.sub(‘123(.*?)123‘,‘123789123‘,s) print output #123789123 或者 output = re.sub(‘123(.*?)123‘,‘123%d123‘%789,s) #123789123,%d相似于C语言 #re.sub的作用是在原字符串中匹配符合规律的内容,然后替换
a = ‘asd123456ahdga‘ b = re.findall(‘(\d+)‘,a) print b #‘123456‘
a = ‘sda123456adh555afkj‘ b = re.findall(‘(d\+)‘,a) print b #‘123456‘,‘555‘
标签:内容 .net space adk 队列 ret smi 使用技巧 data-
原文地址:http://www.cnblogs.com/wzzkaifa/p/6927076.html