常用模块 re模块与正则表达式
re模块
正则:
正则就是用一些具有特殊含义的符号组合到一起(称之为正则表达式)来描述字符或字符串的方法。或者说:正则就是用描述一类事物的规则。(在python中) 它内嵌在python中,并通过re模块来实现。正则表达式模式被编译成一系列的字节码,然后用C编写的匹配引擎执行。
二、常用匹配模式(元字符)
要先导入re模块,配合正则表达式:、 import re \w:匹配字母数字及下划线 print(re.findall('\w','ajllhs_127sji%&^h_9')) #打印结果: ['a', 'j', 'l', 'l', 'h', 's', '_', '1', '2', '7', 's', 'j', 'i', 'h', '_', '9'] \W :匹配非字母数字下划线 print(re.findall('\W','shuk*&%^-_=|sjf98')) #打印结果 ['*', '&', '%', '^', '-', '=', '|'] \s:匹配任意空白字符,等价于[\t\n\f\r] print(re.findall('\s',' \n6si(*-=\rj8hs*%#\t')) #打印结果 [' ', '\n', '\r', '\t'] \S 匹配任意非空白字符 print(re.findall('\S',' r\r4$^*(\njsh\t@!')) #打印结果 ['r', '4', '$', '^', '*', '(', 'j', 's', 'h', '@', '!'] \d匹配任意数字等价于[0-9] print(re.findall('\d','js&*\r89$46#0\'/j')) #打印结果 ['8', '9', '4', '6', '0'] \D匹配任意非数字 print(re.findall('\D','js&*\r89$46#0\'/j')) #打印结果 ['j', 's', '&', '*', '\r', '$', '#', "'", '/', 'j'] \A 匹配字符串的开始 print(re.findall('\Aada','123ada sijhada')) #打印结果:[] 以ada为字符串的开始, 没有则给出一个空列表 print(re.findall('\Aada','ada12ada sijhada')) #打印结果 ['ada'] 只提取开头的 ada,之后再有的都不会提取,因为后面的都不是以ada开头了。 一般\A不用, 而用^来代替 print(re.findall('^ada','123ada sijhada')) #打印结果:[] 以ada为字符串的开始, 没有则给出一个空列表, 效果等同于print(re.findall('\Aada','123ada sijhada')) \Z 匹配字符串结束,如果存在换行,只匹配到换行钱结束的字符串 print(re.findall('nb\Z','adaxjshi&*)12sbw(')) 打印结果为 [ ] 因为不是以nb结尾的字符串 print(re.findall('nb\Z','adaxjshi&*)12nbnbnb')) #打印结果为 ['nb'] 是以nb结尾的,且不关里面有多少个nb 只取结尾的那个nb \Z一般也不用而是用$来代替用法同\Z 一米一样 print(re.findall('nb$','adaxjshinbnbnb')) #打印结果 ['nb'] \n 匹配换行符 print(re.findall('\n','sh\n268*&()kl\n')) #打印结果 ['\n', '\n'] \t 匹配制表符 print(re.findall('\t','sh\t268*&()kl\t')) #打印结果 ['\t', '\t'] . 匹配任意一个字符 ,除了换行符。当re.DOTALL标记被指定时, 则可以匹配包括换行符的任意字符 print(re.findall('a.b','anxb jianbkh ahba\rb a\nb')) #打印结果['anb', 'ahb', 'a\rb'] 第一个anxb 不能匹配因为中间有两个字符,.只能匹配一个, 后面的a\nb 也不能匹配,\n 是换行符。 print(re.findall('a.b','anxb jianbkh ahba\rb a\nb',)) #打印结果['anb', 'ahb', 'a\rb', 'a\nb']
import re [...]代表用来表示 一组字符串找那个单独列出 print(re.findall('a...c','amkbcsc abbyc')) #打印结果 # 打印结果 ['a', 'c', 'c', 'a', 'c'] 单独列出a c [^...] 代表用来表示 不在[] 中的字符 print(re.findall('[^bcd]','abcdsad, sjdmhsmzsc')) # 打印结果:['a', 's', 'a', ',', ' ', 's', 'j', 'm', 'h', 's', 'm', 'z', 's']