标签:group ups \n 模式 正则表达 pad point bottom back
‘.‘ 默认匹配除\n之外的任意一个字符,若指定flag DOTALL,则匹配任意字符,包括换行 ‘^‘ 匹配字符开头,若指定flags MULTILINE,这种也可以匹配上(r"^a","\nabc\neee",flags=re.MULTILINE) ‘$‘ 匹配字符结尾, 若指定flags MULTILINE ,re.search(‘foo.$‘,‘foo1\nfoo2\n‘,re.MULTILINE).group() 会匹配到foo1 ‘*‘ 匹配*号前的字符0次或多次, re.search(‘a*‘,‘aaaabac‘) 结果‘aaaa‘ ‘+‘ 匹配前一个字符1次或多次,re.findall("ab+","ab+cd+abb+bba") 结果[‘ab‘, ‘abb‘] ‘?‘ 匹配前一个字符1次或0次 ,re.search(‘b?‘,‘alex‘).group() 匹配b 0次 ‘{m}‘ 匹配前一个字符m次 ,re.search(‘b{3}‘,‘alexbbbs‘).group() 匹配到‘bbb‘ ‘{n,m}‘ 匹配前一个字符n到m次,re.findall("ab{1,3}","abb abc abbcbbb") 结果‘abb‘, ‘ab‘, ‘abb‘] ‘|‘ 匹配|左或|右的字符,re.search("abc|ABC","ABCBabcCD").group() 结果‘ABC‘ ‘(...)‘ 分组匹配, re.search("(abc){2}a(123|45)", "abcabca456c").group() 结果为‘abcabca45‘ ‘\A‘ 只从字符开头匹配,re.search("\Aabc","alexabc") 是匹配不到的,相当于re.match(‘abc‘,"alexabc") 或^ ‘\Z‘ 匹配字符结尾,同$ ‘\d‘ 匹配数字0-9 ‘\D‘ 匹配非数字 ‘\w‘ 匹配[A-Za-z0-9] ‘\W‘ 匹配非[A-Za-z0-9] ‘s‘ 匹配空白字符、\t、\n、\r , re.search("\s+","ab\tc1\n3").group() 结果 ‘\t‘ ‘(?P<name>...)‘ 分组匹配
re.match(pattern, string[, flags]) 从头开始匹配
re.search(pattern, string[, flags]) 匹配包含
re.findall(pattern, string) 把所有匹配到的字符放到以列表中的元素返回
re.split(pattern, string[, maxsplit=0) 以匹配到的字符当做列表分隔符
re.sub(pattern, replace, string[, count=0] 匹配字符并替换
re.fullmatch 全部匹配
2.1 简单例子
>>> import re >>> s = ‘abc1d3e‘re.match
>>> print(re.match(‘[0-9]‘, s)) None >>> re.match(‘[0-9]‘, ‘1bdfd‘) <_sre.SRE_Match object; span=(0, 1), match=‘1‘>re.search
>>> re.search(‘[0-9]‘, s) <_sre.SRE_Match object; span=(3, 4), match=‘1‘>>>> re.search(‘[0-9]‘, s).group()
‘1‘# span是类似于切片的索引re.findall
>>> re.findall(‘[0-9]‘, s) [‘1‘, ‘3‘]re.split
>>> re.split(‘d‘, s) [‘abc1‘, ‘3e‘]>>> s2 = ‘alex99jack88rain77jinxin50‘ >>> re.split(‘\d+‘, s2) [‘alex‘, ‘jack‘, ‘rain‘, ‘jinxin‘, ‘‘]re.findall
>>> s1 = ‘aabbaa123‘ >>> re.findall(‘a‘, s1) [‘a‘, ‘a‘, ‘a‘, ‘a‘]>>> re.findall(‘\d+‘, s2)
[‘99‘, ‘88‘, ‘77‘, ‘50‘]re.sub
>>> re.sub(‘a‘, ‘c‘, s1) ‘ccbbcc123‘
分组匹配
>>> import re >>> s=‘alex123‘ >>> re.search(‘([a-z]+)([0-9]+)‘, s).group() (‘alex123‘) >>> re.search(‘([a-z]+)([0-9]+)‘, s).groups() (‘alex‘, ‘123‘)
>>> re.search(‘\d‘, s) <_sre.SRE_Match object; span=(4, 5), match=‘1‘> >>> re.search(‘\d+‘, s) <_sre.SRE_Match object; span=(4, 7), match=‘123‘>
>>> re.search(‘\D+‘, s) <_sre.SRE_Match object; span=(0, 4), match=‘alex‘>
另外一种分组匹配
>>> s1 = ‘130704200005250613‘ >>> re.search(‘(?P<province>\d{3})(?P<city>\d{3})(?P<born_year>\d{4})‘, s1).groupdict() {‘province‘: ‘130‘, ‘city‘: ‘704‘, ‘born_year‘: ‘2000‘}
复杂一点的re.sub
>>> re.sub(‘\d+‘,‘_‘, s3) ‘alex_jack_rain_\\jinxin_|mac-oldboy‘ >>> re.sub(‘\d+‘,‘_‘, s3, count=2) ‘alex_jack_rain77\\jinxin50|mac-oldboy‘
re.split
>>> s2 = ‘alex99jack88rain77jinxin50#mac-oldboy‘ >>> re.split(‘\d+|#|-‘, s2) [‘alex‘, ‘jack‘, ‘rain‘, ‘jinxin‘, ‘‘, ‘mac‘, ‘oldboy‘] >>> s4 = ‘9-2*5/3+7\3*99/4*2998+10*568/14‘ >>> re.split(‘[-\*/+]‘, s4) [‘9‘, ‘2‘, ‘5‘, ‘3‘, ‘7\x03‘, ‘99‘, ‘4‘, ‘2998‘, ‘10‘, ‘568‘, ‘14‘] >>> re.split(‘[-\*/+]‘, s4, maxsplit=2) [‘9‘, ‘2‘, ‘5/3+7\x03*99/4*2998+10*568/14‘]
re.fullmatch
>>> re.fullmatch(‘alex123‘, ‘alex123‘) <_sre.SRE_Match object; span=(0, 7), match=‘alex123‘> >>> re.fullmatch(‘\w+@\w+\.(com|cn|edu)‘, ‘alex@oldboyedu.com‘) <_sre.SRE_Match object; span=(0, 18), match=‘alex@oldboyedu.com‘>
re.compile(pattern[,flags])根据包含正则表达式的字符串创建模式对象
>>> pattern = re.compile(‘\w+@\w+\.(com|cn|edu)‘) # 如果需要多次的匹配,建议首先把pattern用compile方法转化,这样解释器就不需要每次都转化了。 >>> pattern.fullmatch(‘alex@oldboyedu.cn‘) <_sre.SRE_Match object; span=(0, 17), match=‘alex@oldboyedu.cn‘>
a = re.compile(r"""\d + # the integral part \. # the decimal point \d * # some fractional digits""", re.X) b = re.compile(r"\d+\.\d*")
其他的例子
>>> re.search(‘a‘, "Alex", re.I) <_sre.SRE_Match object; span=(0, 1), match=‘A‘> >>> re.search(‘foo.$‘, ‘foo1\nfoo2\n‘) <_sre.SRE_Match object; span=(5, 9), match=‘foo2‘> >>> re.search(‘foo.$‘, ‘foo1\nfoo2\n‘, re.M) <_sre.SRE_Match object; span=(0, 4), match=‘foo1‘> >>> print(re.search(‘.‘, ‘\n‘)) None >>> re.search(‘.‘, ‘\n‘, re.S) <_sre.SRE_Match object; span=(0, 1), match=‘\n‘> >>> print(re.search(‘. #test‘, ‘alex‘)) None >>> re.search(‘. #test‘, ‘alex‘, re.X) <_sre.SRE_Match object; span=(0, 1), match=‘a‘>
标签:group ups \n 模式 正则表达 pad point bottom back
原文地址:https://www.cnblogs.com/haoqirui/p/9969730.html