正则 和 re模块
1. 正则表达式
正则它是一门独立的语言,意味着学习了正则可以在很多地方使用 正则就是通过一些特殊符号筛选出符合我们规则的数据! 案例:匹配手机号规则 """在Python中使用正则,需要借助于re模块""" 1. 字符组 [0-9] [a-z] [A-Z] [0-9a-zA-Z] 2. 字符 . 匹配除换行符以外的任意字符 \w 匹配字母 数字以及下划线 \d 匹配任意数字 \n 匹配一个换行符 ^ 匹配任意字符的开始 $ 匹配字符串的结尾 a|b 匹配字符a或b () 匹配括号内的表达式或者一个组 [...] 匹配字符组中的字符 [^...] 匹配除了字符组中字符的所有字符 3. 量词 1. 量词只能够影响前面一个字符(ab+ 影响b) 2. 量词不能够单独使用,必须配合表达式使用 * # 重复零次或更多次 + # 重复一次或更多次 ? # 重复零次或一次 {n} # 重复n次 {n,} # 重复n次或更多次 {n,m} # 重复n到m次 4. 贪婪匹配 """ # 待匹配的文本 <script>hello</script> # 正则 <.*> # <script> # <script>hello</script> """贪婪匹配就是把匹配的内容尽量多的匹配!""" 取消贪婪匹配 <.*?> . 是任意字符 * 是取 0 至 无限长度 ? 是非贪婪模式。 何在一起就是 取尽量少的任意字符,一般不会这么单独写,他大多用在: .*?x 就是取前面任意长度的字符,直到一个x出现 """ 5. 取消转义 \\n '\n' 在原生正则中,取消转义字符只需要加\(一个\只能转一个字符) 在Python中,推荐使用r'\n\t\d' # 取消转义
2. re模块
# ret = re.findall('正则', '待匹配内容') # 返回所有满足匹配条件的结果,放在列表里 """待匹配内容一定是一个字符串,文本. []""" # ret = re.findall('ab', 'eva egon yuan a') # 返回所有满足匹配条件的结果,放在列表里 """如果匹配到内容就把数据以列表的形式返回, 如果匹配不到就返回[]""" # print(ret) # ['a', 'a'] # if ret: # pass # else: # pass ret = re.search('ab', 'eva egon yuan') print(ret) #结果 : 'a' # print(ret.group()) # a # 函数会在字符串内查找模式匹配,只到找到第一个匹配然后返回一个包含匹配信息的对象,该对象可以 # 通过调用group()方法得到匹配的字符串,如果字符串没有匹配,则返回None。 # if ret: # print(ret.group()) # else: # print(ret) # try: # ret = re.search('a', 'eva egon yuan').group() # print(ret) # except Exception: # print(ret) ret = re.match('a', 'ewqeqwabc') # 同search,不过尽在字符串开始处进行匹配 print(ret) try: ret = re.match('a', 'ewqeqwabc').group() print(ret) except Exception: print(ret)
3. 分组
无名分组:使用小括号括起来的正则表达式就是无名分组 res = re.search('^[1-9](\d{14})(\d{2}[0-9x])?$','110105199812067023') print(res) print(res.group()) # 110105199812067023 print(res.group(1)) # 10105199812067 print(res.group(2)) # 023 # findall针对分组优先展示 无名分组 """ 如果是findall,分组优先展示,无名分组 """ res = re.findall("^[1-9](\d{14})\d{2}[0-9x]?$",'110105199812067023') print(res) # ['023'] 有名分组:使用小括号括起来的正则表达式然后给起个名字就是有名的 res = re.search('^[1-9](?P<xxx>\d{14})(?P<ooo>\d{2}[0-9x])?$','110105199812067023') print(res) print(res.group(1)) print(res.group(2)) print(res.group('xxx')) print(res.group('ooo'))
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现