今天学了一些简单的正则表达式
之前一直觉得这玩意好像很麻烦的样子
其实实际学了之后感觉和通配符差不多
只要好好整理一下就没那么麻烦了
然后只要多用就能越来越熟练
import re
'字符串匹配'
re.findall('hello','hellohello hello aello bello')
"['hello', 'hello', 'hello']"
'可用|分割字符串'
re.findall('hello|aello','hellohello hello aello bello')
"['hello', 'hello', 'hello', 'aello']"
'.匹配任意单个字符'
re.findall('.ello','hello xello ballo @ello \nello')
"['hello', 'xello', '@ello', '\ello']"
'单个字符条件匹配'
re.findall('[hp]ello','hello pello aello')
"['hello', 'pello']"
"[]中为单个匹配字符的白名单"
re.findall('[^hp]ello','hello pello aello')
"['aello']"
"[]中为单个匹配字符的黑名单"
re.findall('^[hp]ello','hello pello aello')
"['hello']"
"这里限定了被匹配语句的开头必须是白名单中的"
'匹配单个数字'
re.findall('\d','abc123a1b2c3')
"['1', '2', '3', '1', '2', '3']"
'匹配单个数字以及字母(包括大小写)'
re.findall('\w','012ascv@5#1%S7FS161SD1')
"['0', '1', '2', 'a', 's', 'c', 'v', '5', '1', 'S', '7', 'F', 'S', '1', '6', '1', 'S', 'D', '1']"
'匹配两个'
re.findall('\w\w','012ascv@5#1%S7FS161SD1')
"['01', '2a', 'sc', 'S7', 'FS', '16', '1S', 'D1']"
'匹配空白字符以及空格'
re.findall('\s','abc sfas \r \n')
"[' ', ' ', '\r', ' ', '\n']"
'*表示左边第一个字符出现任意次,+代表左边第一个字符出现一次及以上'
re.findall('a*b+','bbbbbaabbbb')
"['bbbbb', 'aabbbb']"
'?代表左边第一个出现0次或1次,{}可指定左边字符出现次数,{}中可用逗号分割出现次数'
re.findall('a?b{3,6}','abbb bbbbbb bb aabbbb bbb')
"['abbb', 'bbbbbb', 'abbbb', 'bbb']"
这里为了方便代码里就没把正则的结果列表给赋了而是直接把结果打在了下方注释中。