心灵鸡汤电影推荐:
阿甘正传、辛德勒名单、肖申克的救赎、勇敢的心、角斗士、美国丽人、教父、钢琴师、指环王、西雅图不眠夜、廊桥遗梦、可可西里的美丽传说、放牛班的春天、血钻、战争之王、上帝之城、中央车站、猜火车、低俗小说、华尔街之狼
程序的解耦
模块
正则表达式
import re
re.match('','')全匹配
re.search('','')任意部分匹配
re.findall('','')查所有
re.split('','') 分割
re.sub('','','') 替换 re.sub('[0-9]+','|',"adfadf12131adfas13f1ds3f13a")
正则表达式特殊符号意义:
‘.’ 默认匹配除 之外的任意一个字符,若指定flag DOTALL,则匹配任意字符,包括换行
‘^’ 匹配字符开头,若指定flag MULTILINE,这种也可以匹配上(r"^a"," abc eee",flags=re.MULTILINE)
'$' 匹配字符结尾,另同上
'*' 匹配*前的字符0次或多次 re.findall(“ab*”,"cabb3abcbbac") 结果为["abb","ab","a"]
'+' 匹配前一个字符1次或多次 re.findall("ab+","ab+cd+abb+bba") 结果为["ab","abb"]
'?' 匹配前一个字符1次或0次
‘{m}’ 匹配前一个字符m次
‘{n,m}’ 匹配前一个字符n到m次 re.findall("ab{1,3}","abb abc abbcbbb") 结果为['abb','ab','abb']
'|' 匹配|左或|右的字符,re.search("abc|ABC","ABCBabcCD").group() 结果为“ABC”
‘(...)’ 分组匹配 re.search("(abc){2}a(123|456)c",“abcabca456c””).group() 结果 abcabca456c
'A' 只从字符开头匹配, re.search("Aabc","alexabc") 结果是匹配不到的
'' 匹配字符结尾,同$
'd' 匹配数字0-9
‘D’ 匹配非数字
'w' 匹配[A-Za-z0-9]
'W' 匹配非[A-Za-z0-9]
's' 匹配空白字符、 、 、 ,re.search("s+","ab c1 3").group() 结果为 ’
匹配反斜杠的困扰:
特殊标记的含义:
flags=re.I 忽略大小写
flags=re.M 表示将字符串视为多行,从而^匹配每一行的行首,$匹配每一行的行尾
flags=re.S 表示.的作用包括换行符
import re
a = '''asdfsafhellopass: 234455 worldafdsf '''
b = re.findall('hello(.*?)world',a)
c = re.findall('hello(.*?)world',a,re.S)
print 'b is ' , b
print 'c is ' , c
运行结果如下:
b is []
c is ['pass:
234455
']
作业:自己写一个计算器,要求将一个字符串形式的公式放进去,直接能算出结果来,整个计算器的优先级、加减乘除运算都要自己写代码去完成。