第四章 10 re正则表达式讲解

re正则表达式

'.'     默认匹配除\n之外的任意一个字符,若指定flag DOTALL,则匹配任意字符,包括换行

'^'     匹配字符开头,若指定flags MULTILINE,这种也可以匹配上(r"^a","\nabc\neee",flags=re.MULTILINE)

'$'     匹配字符结尾,或e.search("foo$","bfoo\nsdfsf",flags=re.MULTILINE).group()也可以

'*'     匹配*号前的字符0次或多次,re.findall("ab*","cabb3abcbbac")  结果为['abb', 'ab', 'a']

'+'     匹配前一个字符1次或多次,re.findall("ab+","ab+cd+abb+bba") 结果['ab', 'abb']

'?'     匹配前一个字符1次或0'{m}'   匹配前一个字符m次

'{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|456)c", "abcabca456c").group() 结果 abcabca456c





'\A'    只从字符开头匹配,re.search("\Aabc","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.search("(?P<province>[0-9]{4})(?P<city>[0-9]{2})(?P<birthday>[0-9]{4})","371481199306143242").groupdict("city") 结果{'province'

re匹配语法
re.match 从开头开始匹配
re.search
re.findall
re.split
re.sub

import  re

s='1abc1234'

print(re.match('[0-9]','abc1234')) #match从头开始匹配

print(re.search('[0-9]','abc1234')) 
print(re.findall('[0-9]',s))
if match_res: #判断match_res 不是None
    print(match_res.group())
#返回值
None
<re.Match object; span=(3, 4), match='1'>
['1', '1', '2', '3', '4']
1

公式讲解

print(re.search('.','abc1234'))
>>><re.Match object; span=(0, 1), match='1'>

print(re.search('^ab','abc'))
print(re.match('b$','bob'))
print(re.search('b$','bob'))

print(re.search('a*','Alex'))
print(re.search('a*','Alex').group())

print(re.search('ab*','aaaAlex'))

print(re.search('a+','aaab'))

print(re.search('ab+','aaab'))

print(re.search('a?','aabaaaa'))
print(re.search('a?','baaaa'))
print(re.search('a{2}','assaaa'))

print(re.search('a{3,5}','assaaa'))
print(re.search('[a,z]{1,2}','a2lex'))
print(re.search('[a,z]{1,2}','ablex'))

print(re.search('a|Alex','alex'))
>>>>#结果
><re.Match object; span=(0, 2), match='ab'>
None
<re.Match object; span=(2, 3), match='b'>
<re.Match object; span=(0, 0), match=''>

<re.Match object; span=(0, 1), match='a'>
<re.Match object; span=(0, 3), match='aaa'>
<re.Match object; span=(2, 4), match='ab'>
<re.Match object; span=(0, 1), match='a'>
<re.Match object; span=(0, 0), match=''>
<re.Match object; span=(3, 5), match='aa'>
<re.Match object; span=(3, 6), match='aaa'>
<re.Match object; span=(0, 1), match='a'>
<re.Match object; span=(0, 1), match='a'>
<re.Match object; span=(0, 1), match='a'>
import re

print(re.search('([a-z]+)([0-9]+)','alex123').groups())
>>('alex', '123')
print(re.search('\Aalex','alexabc'))
>><re.Match object; span=(0, 4), match='alex'>
>print(re.search('\d','alex2'))
>>>><re.Match object; span=(4, 5), match='2'>
>>print(re.search('\d+','alex2'))
><re.Match object; span=(4, 5), match='2'>
>print(re.search('\w+','a@#$%^#ikhtmki'))
>>>><re.Match object; span=(0, 1), match='a'>
>s='130704200005250613'
print(re.search('(?P<province>\d{3})(?P<city>\d{3})(?P<born_year>\d{4})',s).groups())

res=re.search('(?P<province>\d{3})(?P<city>\d{3})(?P<born_year>\d{4})',s)
print(res.groupdict())
>>>>>
>('130', '704', '2000')
{'province': '130', 'city': '704', 'born_year': '2000'}
s='alex22jack23jinxin50'
print(re.split('\d',s))
print(re.split('\d+',s))
print(re.findall('\d+',s))

s='alex22jack23jinxin50#mack-odlboy'
print(re.split('\d+|#|-',s))

a='alex22jack23jinxin50|mack-odlboy'

print(re.split('\|',a))
#结果
['alex', '', 'jack', '', 'jinxin', '', '']
['alex', 'jack', 'jinxin', '']
['22', '23', '50']
['alex', 'jack', 'jinxin', '', 'mack', 'odlboy']
['alex22jack23jinxin50', 'mack-odlboy']
s='9-2*5/3+7/3*99/4*2999+10*568/14'
print(re.split('[-\*/+]',s))
print(re.split('[-\*/+]',s,maxsplit=2))
>>['9', '2', '5', '3', '7', '3', '99', '4', '2999', '10', '568', '14']
['9', '2', '5/3+7/3*99/4*2999+10*568/14']
print(re.fullmatch('alex123','alex123'))

print(re.fullmatch('\w+@\w+\.(cn|.com|edu)','[email protected]'))

pattern = re.compile('\w+@\w+.(cn|com|edu)')
print(pattern.fullmatch('[email protected]'))
>>><re.Match object; span=(0, 7), match='alex123'>
<re.Match object; span=(0, 17), match='[email protected]'>
<re.Match object; span=(0, 17), match='[email protected]'>
print(re.search('a','Alex',re.I))
print(re.search('foo.$','foo1\nfoo2\n',re.M))
print(re.search('.','\n',re.S))
print(re.search('.',', #test',re.X))
>><re.Match object; span=(0, 1), match='A'>
<re.Match object; span=(0, 4), match='foo1'>
<re.Match object; span=(0, 1), match='\n'>
<re.Match object; span=(0, 1), match=','>

猜你喜欢

转载自blog.csdn.net/qq_42936973/article/details/82291666
今日推荐