python正则表达式

匹配字符

.       匹配除
以外的任意一个字符
^      从起始位置开始匹配
$      从末尾开始匹配
*      匹配0到任意个字符
+     匹配1到任意字符
?      匹配0到2个字符
{}    匹配任意字符 
{1,2}  匹配1到2个字符

[]        .  $ + ? {}   这些在[]中不在有特殊意义   -   ^具有意义
'''
d   匹配任何十进制数  相当于[0-9]
D   匹配任何非数字字符  相当于[^0-9]
s   匹配任何空白字符  相当于 [	

fv]
S   匹配任何非空白字符  相当于[^	

fv]
w   匹配任何字母数字字符  相当于[a-z0-9A-Z]
W   匹配任何非字母数字字符  相当于[^a-z0-9A-Z]
   匹配一个单词边界   匹配空格间的位置   res=re.findall(r'a','a bbccd')
'''

re中的方法

1.match

#match   匹配字符串的起始位置
res_match=re.match('com','comaa',re.S).group()   #匹配所有字符,改变标志位
res_match=re.match('com','comaa').span()   #从第几个位置到第几个位置

2.search

#search
res_search=re.search('com','aacom').group()
print(res_search)

3.sub  subn

#sub    替换字符串subn
res_sub=re.sub('a','b','a 123 456 a',1)   #最后一个参数是替换的次数
res_sub=re.subn('a','b','a 123 456 a')    #返回一个元祖,包含替换后的元素和替换的次数
print(res_sub)

4.findall

res1=re.findall('a*a','bbaaaaaaa')
res=re.findall('a.*a','baaaccaa')   #匹配以a开头一直到a结尾的字符
res=re.findall('a.+a','bbaaaccaa')
res=re.findall('a.?a','bbaaaacc')
res=re.findall('a.{2}a','bbaaacc')   #2次
res=re.findall('a.{,2}a','bbaaacc')  #0到2次
res=re.findall('ab{1,2}a','bbabbaacc')  #b 1到2次

5.split

#split
res_split=re.split('d','one1two2',1)   #代表分割的次数
print('hh',res_split)

6.compile

#compile
text='aa9b'
regx=re.compile(r'ad')
print(type(regx))   #对象
print(regx.findall(text))   #多次调用更高效

python  re  转义

#python   re   转义
#\\ 到re  \  正则匹配后  
#所以加上原生字符串r

正则分组

#正则分组
#去已经匹配到数据中在做匹配
res=re.findall('a([1-9])d','a3d')
res=re.match('a(?P<name>.)a','afa bb cc')
print(res.group())       #获取所有结果
print(res.groups())     #获取分组结果,以元组展示
print(res.groupdict())   #获取分组结果,以字典展示

  

原文地址:https://www.cnblogs.com/xczssl/p/6340590.html