2020年1月2日 MRKJ page150 re模板

import re
pattern=r'mrw+'  #模式字符串,前面加个r做成原生字符,这样就不用加斜杠做转义
string2='MR_SHOP mr_shop'#要进行匹配的字符串
M=re.match(pattern,string2)
# flags 可选参数,表示标志位的,用于控制匹配方式的
msg='	A 只进行ASCII匹配,也就是不匹配汉字
' 
    '	I 不区分大小写
' 
    '	M 将^ 和 $ 用于整个字符串的开始和结尾的每一个行
' 
    '	S 用(.) 匹配所有字符,包括换行
' 
    '	X 忽略模式字符串中未转义的空格和注释'
print('
**************
',msg,'
***************
')
N=re.match(pattern,string2,re.I)
print(M,'
',N)
print('start位置:',N.start(),'
end位置:',N.end())
print('匹配位置的元祖:',N.span())
print('要匹配的字符串:',N.string)
print('匹配数据:',N.group())


print(N.string[0:7])
print(string2[N.start():N.end()])
print(string2[N.span()[0]:N.span()[1]])

》》》》》

**************
A 只进行ASCII匹配,也就是不匹配汉字
I 不区分大小写
M 将^ 和 $ 用于整个字符串的开始和结尾的每一个行
S 用(.) 匹配所有字符,包括换行
X 忽略模式字符串中未转义的空格和注释
***************

None
<re.Match object; span=(0, 7), match='MR_SHOP'>
start位置: 0
end位置: 7
匹配位置的元祖: (0, 7)
要匹配的字符串: MR_SHOP mr_shop
匹配数据: MR_SHOP
MR_SHOP
MR_SHOP
MR_SHOP

re.match与re.search的区别

re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。
re.findall 用于匹配整个字符串,并以列表方式返回,如果没有则返回空列表。

import re  #验证手机号是不是中国移动
tel_moban=r'^1(3|5)[4-9]d{8}$'#添加边界符,这样就能确保匹配的数字
tel='13434343443'
match=re.match(tel_moban,tel)
if match==None:
    print('sorry')
else:
    print('ok',match.group())

》》》

ok 13434343443

import re
pattern=r'mrw+'  #模式字符串,前面加个r做成原生字符,这样就不用加斜杠做转义
string2='项目名称MR_SHOP mr_shop'#要进行匹配的字符串
M=re.search(pattern,string2)
# flags 可选参数,表示标志位的,用于控制匹配方式的
msg='	A 只进行ASCII匹配,也就是不匹配汉字
' 
    '	I 不区分大小写
' 
    '	M 将^ 和 $ 用于整个字符串的开始和结尾的每一个行
' 
    '	S 用(.) 匹配所有字符,包括换行
' 
    '	X 忽略模式字符串中未转义的空格和注释'
print('
**************
',msg,'
***************
')
N=re.search(pattern,string2,re.I)
print(M,'
',N)
print('start位置:',N.start(),'
end位置:',N.end())
print('匹配位置的元祖:',N.span())
print('要匹配的字符串:',N.string)
print('匹配数据:',N.group())


print(N.string[4:11])
print(string2[N.start():N.end()])
print(string2[N.span()[0]:N.span()[1]])

》》》》

**************
A 只进行ASCII匹配,也就是不匹配汉字
I 不区分大小写
M 将^ 和 $ 用于整个字符串的开始和结尾的每一个行
S 用(.) 匹配所有字符,包括换行
X 忽略模式字符串中未转义的空格和注释
***************

<re.Match object; span=(12, 19), match='mr_shop'>
<re.Match object; span=(4, 11), match='MR_SHOP'>
start位置: 4
end位置: 11
匹配位置的元祖: (4, 11)
要匹配的字符串: 项目名称MR_SHOP mr_shop
匹配数据: MR_SHOP
MR_SHOP
MR_SHOP
MR_SHOP

import re #验证是否有危险字符
pattern=r'(hk)|(zb)|(jt)'
about='I am hk,like zb,I want to jt'
match=re.search(pattern,about)
if match:
    print('this is unsafty:',match.group())
else:
    print('this is safty')

》》》》》

this is unsafty: hk

import re  #re.findall 方法
pattern=r'mrw+'  #模式字符串,前面加个r做成原生字符,这样就不用加斜杠做转义
string2='MR_SHOP mr_shop'#要进行匹配的字符串
M=re.findall(pattern,string2)
# flags 可选参数,表示标志位的,用于控制匹配方式的
msg='	A 只进行ASCII匹配,也就是不匹配汉字
' 
    '	I 不区分大小写
' 
    '	M 将^ 和 $ 用于整个字符串的开始和结尾的每一个行
' 
    '	S 用(.) 匹配所有字符,包括换行
' 
    '	X 忽略模式字符串中未转义的空格和注释'
print('
**************
',msg,'
***************
')
N=re.findall(pattern,string2,re.I)
print(M,'
',N) #返回的是列表

》》》》

**************
A 只进行ASCII匹配,也就是不匹配汉字
I 不区分大小写
M 将^ 和 $ 用于整个字符串的开始和结尾的每一个行
S 用(.) 匹配所有字符,包括换行
X 忽略模式字符串中未转义的空格和注释
***************

['mr_shop']
['MR_SHOP', 'mr_shop']

原文地址:https://www.cnblogs.com/python1988/p/12142219.html