标签:
1.常用符号
.:会匹配任意字符,换行符\n除外
*:会匹配前一个字符0次,或者无限次
?:匹配前一个字符0次或者一次
.*:贪心算法
.*?:非贪心算法
():括号内的数据作为结果返回
2.常用方法
findall:匹配所有符合规律的内容,返回包含结果的列表
Search:匹配并提取第一个符合规律的内容,返回一个正则表达式对象(object)
Sub:替换符合规律的内容,返回替换后的值
import re a="xzx123" b=re.findall(‘x‘,a) print(b) #[‘x‘, ‘x‘]
import re a="zx123" b=re.findall(‘x..‘,a) print(b) #[‘x12‘]
import re a="xzx123" b=re.findall(‘x*‘,a) print(b) #[‘x‘, ‘‘, ‘x‘, ‘‘, ‘‘, ‘‘, ‘‘]
import re a="xzx123" b=re.findall(‘x?‘,a) print(b) #[‘x‘, ‘‘, ‘x‘, ‘‘, ‘‘, ‘‘, ‘‘]
import re c="11111xxixx111xxlovexx111xxyouxx11111111111" b=re.findall(‘xx.*xx‘,c) print(b) #[‘xxixx111xxlovexx111xxyouxx‘] # .*属于贪心算法,会最大限度匹配已xx开头xx结尾的字符串
import re c="11111xxixx111xxlovexx111xxyouxx11111111111" b=re.findall(‘xx.*?xx‘,c) print(b) #[‘xxixx‘, ‘xxlovexx‘, ‘xxyouxx‘] # .*?属于非贪心算法,找到若干个xx开头结尾的字符串
import re c="11111xxixx111xxlovexx111xxyouxx11111111111" b=re.findall(‘xx(.*?)xx‘,c) print(b) #[‘i‘, ‘love‘, ‘you‘] # (.*?)匹配出字符串后截取掉括号外的字符,返回括号包围的内容
#当存在换行符的时候 import re c=‘‘‘11111xxixx111xxlove xx111xxyouxx11111111111‘‘‘ b=re.findall(‘xx(.*?)xx‘,c) print(b) #[‘i‘, ‘111‘] #点号可以匹配所有字符串,除了换行符,当有换行的时候会变成这样的结果
import re c=‘‘‘11111xxixx111xxlove xx111xxyouxx11111111111‘‘‘ b=re.findall(‘xx(.*?)xx‘,c,re.S) print(b) #S会将点号作用范围扩大到换行符,匹配任意字符,包括新的一行
import re c=‘asdfxxIxx123xxlovexxdfs‘ b=re.search(‘xx(.*?)xx123xx(.*?)xx‘,c).group(2) print(b) #love #匹配第二个括号里面的值,group中的数值最大不能超过一共的括号数
import re c=‘asdfxxIxx123xxlovexxdfs‘ f=re.findall(‘xx(.*?)xx123xx(.*?)xx‘,c) print(f) print(f[0][1]) #[(‘I‘, ‘love‘)] #‘love‘ #匹配结果是个列表,列表里面是个元组,如果findall中有三个括号,那匹配的元组里面就有三个值
import re c=‘123abcssfafdsdfs123‘ b=re.sub(‘123(.*?)123‘,‘1233333123‘,c) print(b) #‘1233333123‘ #替换功能,将c中匹配的元素换成1233333123,返回替换后的字符串
标签:
原文地址:http://www.cnblogs.com/itliucheng/p/5057603.html