正则-- | 匹配分组
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | # ### 正则表达式 import re """ # 1.正常分组 () 1) 正常情况下用()圆括号进行分组 可以用\1 反向引用第一个圆括号匹配的内容。 2) (?:正则表达式) 表示取消优先显示的功能 (正则表达式) 代表分组 findall 把所有分组的内容显示到列表里 (?:正则表达式) 代表分组 findall 把所有分组的内容不显示到列表里 """ print (re.findall( '.*?_good' , 'wusir_good alex_good 神秘男孩_good' )) #['wusir_good', ' alex_good', ' 神秘男孩_good'] print (re.findall( '(.*?)_good' , 'wusir_good alex_good 神秘男孩_good' )) #['wusir', ' alex', ' secret男'] print (re.findall( '(?:.*?)_good' , 'wusir_good alex_good 神秘男孩_good' )) # | 代表或 # 既想匹配abc 还要匹配abcd lst = re.findall( "abc|abcd" , "abc234abcd234" ) print (lst) # 有缺陷,不能够都匹配到 #任意 把字符串长的写在前面,字符串短的写在后面 lst = re.findall( "abcd|abc" , "abc234abcd234" ) print (lst) # 匹配小数 ''' 用\让原本有意义的字符变得无意义. . 代表任意字符(除了\n) 如果想要让正则匹配一个. 用\. 让点的意思失效. ''' # 3.14 34. .2342 234. . 2344.234 lst = re.findall( "\d+\.\d+" , "3.14 34. .2342 234. . 2344.234" ) print (lst) # 匹配小数和整数 lst = re.findall( "\d+\.\d+|\d+" , "3.14 34. .2342 234. . 2344.234 343 sdfsdf " ) print (lst) print ( "------112221------" ) # 使用分组的形式来匹配小数和整数 lst = re.findall( "\d+(\.\d+)?" , "3.14 34. .2342 234. . 2344.234 343 sdfsdf " ) print (lst) print ( "------111------" ) lst = re.findall( "\d+(?:\.\d+)?" , "3.14 34. .2342 234. . 2344.234 343 sdfsdf " ) print (lst) # 匹配135或171的手机号 lst = re.findall( "135|^171\d{8}" , "171skdjfksjkf 11312312317178787887" ) print (lst) print ( "------------" ) lst = re.findall( "135|171[0-9]{8}" , "171skdjfksjkf 17178787887" ) print (lst) # ### search 通过正则匹配出第一个对象返回,通过group取出对象中的值 """ findall 把满足条件的所有值都找出来放到列表里面返回 search 找到一个满足条件的值就直接返回,扔到一个对象当中 想要获取对象中的值,用group 对象.group() """ obj = re.search( "\d+" , "jsdfusudf8989sdfsdf89" ) print (obj) res = obj.group() print (res) # 匹配www.baidu.com 或者 www.oldboy.com obj = re.search( "(www)\.(baidu|oldboy)\.(com)" , "www.baidu.com www.oldboy.com" ) res = obj.group() print (res) # 数字1 代表拿第一个小括号里面的内容 res = obj.group( 1 ) print (res) # 数字2 代表拿第一个小括号里面的内容 res = obj.group( 2 ) print (res) # 数字3 代表拿第一个小括号里面的内容 res = obj.group( 3 ) print (res) # groups 一次性把所有小括号里面的内容匹配出来 res = obj.groups() print (res) # "5*6-7/3" 匹配 5*6 或者 7/3 strvar = "5*6-7/3" obj = re.search( "\d+[*/]\d+" ,strvar) res = obj.group() print (res) lst = re.findall( "\d+[*/]\d+" ,strvar) print (lst) |
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ThreeJs-16智慧城市项目(重磅以及未来发展ai)
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想
· Browser-use 详细介绍&使用文档
· 软件产品开发中常见的10个问题及处理方法
· Vite CVE-2025-30208 安全漏洞