2020年1月2日 MRKJ page150 re模板
import re pattern=r'mr\w+' #模式字符串,前面加个r做成原生字符,这样就不用加斜杠做转义 string2='MR_SHOP mr_shop'#要进行匹配的字符串 M=re.match(pattern,string2) # flags 可选参数,表示标志位的,用于控制匹配方式的 msg='\tA 只进行ASCII匹配,也就是不匹配汉字\n' \ '\tI 不区分大小写\n' \ '\tM 将^ 和 $ 用于整个字符串的开始和结尾的每一个行\n' \ '\tS 用(.) 匹配所有字符,包括换行\n' \ '\tX 忽略模式字符串中未转义的空格和注释' print('\n**************\n',msg,'\n***************\n') N=re.match(pattern,string2,re.I) print(M,'\n',N) print('start位置:',N.start(),'\nend位置:',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'mr\w+' #模式字符串,前面加个r做成原生字符,这样就不用加斜杠做转义 string2='项目名称MR_SHOP mr_shop'#要进行匹配的字符串 M=re.search(pattern,string2) # flags 可选参数,表示标志位的,用于控制匹配方式的 msg='\tA 只进行ASCII匹配,也就是不匹配汉字\n' \ '\tI 不区分大小写\n' \ '\tM 将^ 和 $ 用于整个字符串的开始和结尾的每一个行\n' \ '\tS 用(.) 匹配所有字符,包括换行\n' \ '\tX 忽略模式字符串中未转义的空格和注释' print('\n**************\n',msg,'\n***************\n') N=re.search(pattern,string2,re.I) print(M,'\n',N) print('start位置:',N.start(),'\nend位置:',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'mr\w+' #模式字符串,前面加个r做成原生字符,这样就不用加斜杠做转义 string2='MR_SHOP mr_shop'#要进行匹配的字符串 M=re.findall(pattern,string2) # flags 可选参数,表示标志位的,用于控制匹配方式的 msg='\tA 只进行ASCII匹配,也就是不匹配汉字\n' \ '\tI 不区分大小写\n' \ '\tM 将^ 和 $ 用于整个字符串的开始和结尾的每一个行\n' \ '\tS 用(.) 匹配所有字符,包括换行\n' \ '\tX 忽略模式字符串中未转义的空格和注释' print('\n**************\n',msg,'\n***************\n') N=re.findall(pattern,string2,re.I) print(M,'\n',N) #返回的是列表
》》》》
**************
A 只进行ASCII匹配,也就是不匹配汉字
I 不区分大小写
M 将^ 和 $ 用于整个字符串的开始和结尾的每一个行
S 用(.) 匹配所有字符,包括换行
X 忽略模式字符串中未转义的空格和注释
***************
['mr_shop']
['MR_SHOP', 'mr_shop']
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 理解Rust引用及其生命周期标识(下)
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 2025成都.NET开发者Connect圆满结束
· 后端思维之高并发处理方案
· 在 VS Code 中,一键安装 MCP Server!
· 千万级大表的优化技巧
· langchain0.3教程:从0到1打造一个智能聊天机器人