re模块、hashlib模块
一:re模块
正则就是用一些具有特殊含义的符号组合到一起(称之为正则表达式)来描述字符或者字符串的方法。或者说:正则就是用来描述一类事物的规则。(在python中)它内嵌在python中,并通过re模块实现。正则表达式模式被编译成一系列的字节码,然后由C编写的匹配引擎执行。
1.常用的匹配模式
http://blog.****.net/yufenghyc/article/details/51078107
import re #w是匹配字符串中的一个字母/数字/下划线 # print(re.findall('zw','zdsb_hhhh lzrdsbh 5612 dfsd525656')) # # print(re.findall('zW','zdsb_hhhh lzrdsbh 5612 dfsd525656')) # ^是从头开始匹配,开头找不到就不再找了,开头找到的话就找出一个 # $:是从末尾查找,也就是从最后一位查找,最后一位匹配不上就不再查找了 # 例如: # print(re.findall('alex$','alex is alex is alex1')) # alex$ # .:代表一个字符,该字符可以是除换行符( )之外的任意字符,但是在字符串最后加上(re.DOTALL)就可以匹配 # []:代表匹配一个字符,这一个字符是来自自定义范围,'-'减号表示范围,如果要表示加减乘除的话就要将减号放在开头或者是结尾 # 也可以在里面加上^表示取反的意思 # print(re.findall('a[a-z]c','akc jka-cchnj123654')) # print(re.findall('a[w]c','akc jka-cchnj123654')) # 重复匹配(要和其他的字符搭配使用,例如:[ab+]) # ?:代表左边那一个字符出现0次到一次 # *:代表左边那一个字符出现0次到无穷次 # +:代表左边那一个字符出现1次到无穷次 # {n,m}:代表左边那一个字符出现n次到m次 # # print(re.findall('sb?','sb sbb bb sbbb s66bdjij')) # print(re.findall('sb*','sb sbb bb sbbb s66bdjij')) # print(re.findall('sb+','sb sbb bb sbbb s66bdjij')) # print(re.findall('sb{1,3}','sb sbb bb sbbb s66bdjij')) # .*:匹配任意0个到无穷个字符,贪婪匹配 # .*?:匹配任意0个到无穷个字符,非贪婪匹配,例如:a.*?c 找到离自己最近的那个c # |:或者 # ():分组,只打印括号里面的内容 # re.I:加在最后表示不区分大小写 # re.M:表示以换行符分割,进行多行匹配 # msg=''' # zdsbjnjkncmk Grace # 554hhhhhhh Grace # grace hh # ''' # print(re.findall('Grace$',msg,re.M)) # print(re.findall('Grace',msg,re.I)) # # 取出里面所有的数字 # msg='1-2*(60+(-40.35/5)-(4*3))' # print(re.findall('D?(-?d+.?d*)',msg)) pattern=re.compile('alex') #正则表达式 print(pattern.findall('alex is pig ')) print(pattern.match('alex is pig alex')) #只在开头找 print(pattern.search('alex is pig alex ')) #找第一个,找到就结束
# 1.取出里面所有的数字 msg='1-2*(60+(-40.35/5)-(4*3))' print(re.findall('D?(-?d+.?d*)',msg))