re模块(正则表达式)
-
正则表达式 re模块
2.具体内容
2.1 re模块
-
正则表达式:
从字符串中,根据你的描述,提取最终的结果。
s1 = 'xx教育最好的讲师:' 通过你设置的规则,选取出张三。
中国的名著:孙子兵法,聊斋志异,西厢记.....
中国的四大名著:西游记,三国演义,......
设置一个匹配规则:你的匹配规则越精准,你提取的最终的结果越准确。
-
元字符
单个字符匹配
\w 匹配字母或数字,下划线,包含中文 s1='(1baidskj_$' print(re.findall('\w',s1)) #['1', 'b', 'a', 'i', 'd', 's', 'k', 'j', '_'] \W 匹配特殊字符 print(re.findall('\W',s1)) #['(', '$'] \s 匹配空格,制表符,换行符 print(re.findall('\s','tabau*(\t)__\n')) #['\t', '\n'] \S 匹配非空格,制表符,换行符 print(re.findall('\S','barry*__(_\t),\n'))#['b', 'a', 'r', 'r', 'y', '*', '_', '_', '(', '_', ')', ','] \d 匹配的所有的阿拉伯数字 print(re.findall('\d\d\d','一123456Ijjjj')) #['123', '456'] \D 匹配所有的非阿拉伯数字 print(re.findall('\D','一2341234567IIIIII')) #['一', 'I', 'I', 'I', 'I', 'I', 'I'] \A ^获取满足条件的开头 print(re.findall('\Aba','barrydnskdks')) #['ba'] print(re.findall('^ba','barryajsa'))#['ba']#print(re.findall('^ba','barryajsa'))#['ba'] \Z $ 获取满足规则的结尾 print(re.findall('ba\Z','barryba'))#['ba'] print(re.findall('ba$','barryba'))#['ba'] #\n \t print(re.findall('\n','barry\n \t'))#['\n'] print(re.findall('\t','\t barry'))#['\t']
元字符重复匹配
.任意字符, 除去\n print(re.findall('a.b','axb anb a\nb'))#['axb', 'anb'] 显示\n print(re.findall('a.b','acb anb a\nb',re.DOTALL))#['acb', 'anb', 'a\nb'] * 由左边匹配0个或者多个字符组成的片段 print(re.findall('a*b','ababaaab'))#['ab', 'ab', 'aaab'] ? 匹配0个或一个由左边字符定义的片段 print(re.findall('a?b','acb ahb abb abbb aaaaab'))#['b', 'b', 'ab', 'b', 'ab', 'b', 'b', 'ab'] + 匹配左边1个或者多个字符组成的片段 print(re.findall('a+b','aaab aasb '))#['aaab'] {m,n} 范围 print(re.findall('a{1,3}b','aaababbbbaaaab'))#['aaab', 'ab', 'aaab'] .* 贪婪匹配 print(re.findall('a.*b','ababbabbb aaabasb ddbd'))#['ababbabbb aaabasb ddb'] .*? 对贪婪匹配进行一个限制,非贪婪匹配 print(re.findall('a.*?b','adsbbbbbb'))#['adsb'] 一个中括号代表一个字符 print(re.findall('a[abcd]b','acbadbaebaab')) print(re.findall('a[abcd][abcd]b','abcbaccbadddasdf')) print(re.findall('a[1-9]b','a2ba3ba5b')) print(re.findall('a[a-z]b','abcacb')) print(re.findall('a[-*+b]b','a-ba*ba+b')) #['acb', 'adb', 'aab'] #['abcb', 'accb'] #['a2b', 'a3b', 'a5b'] #['acb'] #['a-b', 'a*b', 'a+b'] #分组 默认返回()里面的元素 print(re.findall('(.*?)_sb','a_sns__sb'))#['a_sns_'] | 匹配左边的或者右边 print(re.findall('barry|sq|zn','barrysqzn'))#['barry', 'sq', 'zn'] 分组返回整个的匹配字段 print(re.findall('compan(?:y|ies)','company some good companies'))#['company', 'companies']
常用的举例方法
findall 找到左右的满足条件的字符串返回列表 。 search 找到匹配的第一个就返回
ret=re.search('\d[5-9]','barry122345') print(ret.group()) #45 match 匹配字符串的开头 ret=re.match('[1-9][0-9]+','1234567890098765') print(ret.group())#1234567890098765 split 按照任意多个分隔符分割 print(re.split('[|,]','你好啊| 奥利给,大家好'))#['你好啊', ' 奥利给', '大家好'] compile() 自定义规则 obj=re.compile('\d{2}') print(obj.findall('abcdf432'))#['43'] print(obj.findall('3456gvfd54'))#['34', '56', '54']
做个有理想有节操的程序员!

浙公网安备 33010602011771号