python的正则表达式怎么用
发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章主要为大家展示了"python的正则表达式怎么用",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"python的正则表达式怎么用"这篇文章吧。一、正则
千家信息网最后更新 2026年11月04日python的正则表达式怎么用
这篇文章主要为大家展示了"python的正则表达式怎么用",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"python的正则表达式怎么用"这篇文章吧。
一、正则表达式-元字符
re 模块使 Python 语言拥有全部的正则表达式功能
1. 数量词
# 提取大小写字母混合的单词import rea = 'Excel 12345Word23456PPT12Lr'r = re.findall('[a-zA-Z]{3,5}',a)# 提取字母的数量3个到5个print(r)# ['Excel', 'Word', 'PPT']# 贪婪 与 非贪婪 【Python默认使用贪婪模式】# 贪婪:'[a-zA-Z]{3,5}'# 非贪婪:'[a-zA-Z]{3,5}?' 或 '[a-zA-Z]{3}'# 建议使用后者,不要使用?号,否则你会与下面的?号混淆# 匹配0次或无限多次 *号,*号前面的字符出现0次或无限次import rea = 'exce0excell3excel3'r = re.findall('excel*',a)r = re.findall('excel.*',a) # ['excell3excel3']# excel 没有l 有很多l都可以匹配出来print(r)# ['exce', 'excell', 'excel']# 匹配1次或者无限多次 +号,+号前面的字符至少出现1次import rea = 'exce0excell3excel3'r = re.findall('excel+',a)print(r)# ['excell', 'excel']# 匹配0次或1次 ?号,?号经常用来去重复import rea = 'exce0excell3excel3'r = re.findall('excel?',a)print(r)# ['exce', 'excel', 'excel']2. 字符匹配
line = 'xyz,xcz.xfc.xdz,xaz,xez,xec'r = re.findall('x[de]z', line)# pattern 是x开始,z结束,含d或eprint(r)# ['xdz', 'xez']r = re.findall('x[^de]z', line)# pattern 是x开始,z结束,不是含d或eprint(r)# ['xyz', 'xcz', 'xaz']# \w 可以提取中文,英文,数字和下划线,不能提取特殊字符import rea = 'Excel 12345Word\n23456_PPT12lr'r = re.findall('\w',a)print(r)# ['E', 'x', 'c', 'e', 'l', '1', '2', '3', '4', '5', 'W', 'o', 'r', 'd', '2', '3', '4', '5', '6', '_', 'P', 'P', 'T', '1', '2', 'l', 'r']# \W 提取特殊字符,空格 \n \timport rea = 'Excel 12345Word\n23456_PPT12lr'r = re.findall('\W',a)print(r)# [' ', '\n']3. 边界匹配
# 限制电话号码的位置必需是8-11位才能提取import retel = '13811115888'r = re.findall('^\d{8,11}$',tel)print(r)# ['13811115888']4. 组
# 将abc打成一个组,{2}指的是重复几次,匹配abcabcimport rea = 'abcabcabcxyzabcabcxyzabc'r = re.findall('(abc){2}',a) # 与# ['abc', 'abc']print(r)r = re.findall('(abc){3}',a)# ['abc']5. 匹配模式参数
# findall第三参数 re.I忽略大小写import rea = 'abcFBIabcCIAabc'r = re.findall('fbi',a,re.I)print(r)# ['FBI']# 多个模式之间用 | 连接在一起import rea = 'abcFBI\nabcCIAabc'r = re.findall('fbi.{1}',a,re.I | re.S)# 匹配fbi然后匹配任意一个字符包括\nprint(r)# ['FBI\n']二、方法
re.findall
匹配出字符串中所有 与制定值相关的值
以列表的形式返回
未匹配则返回空列表
import rere.findall(pattern, string, flags=0)pattern.findall(string[ , pos[ , endpos]])
import reline = "111aaabbb222小呼噜奥利奥"r = re.findall('[0-9]',line)print(r)# ['1', '1', '1', '2', '2', '2']re.match
re.match 尝试从字符串的起始位置匹配一个模式
如果不是起始位置匹配成功的话,match()就返回none。
re.match(pattern, string, flags=0)# (标准,要匹配的,标志位)
print(re.match('www','www.xxxx.com'))print(re.match('www','www.xxxx.com').span())print(re.match('com','www.xxxx.com'))(0, 3)None
group匹配对象
import rea = 'life is short,i use python,i love python'r = re.search('life(.*)python(.*)python',a)print(r.group(0)) # 完整正则匹配 ,life is short,i use python,i love pythonprint(r.group(1)) # 第1个分组之间的取值 is short,i use print(r.group(2)) # 第2个分组之间的取值 ,i love print(r.group(0,1,2)) # 以元组形式返回3个结果取值 ('life is short,i use python,i love python', ' is short,i use ', ',i love ')print(r.groups()) # 返回就是group(1)和group(2) (' is short,i use ', ',i love ')import re# .* 表示任意匹配除换行符(\n、\r)之外的任何单个或多个字符# (.*?) 表示"非贪婪"模式,只保存第一个匹配到的子串# re.M 多行匹配,影响 ^ 和 $# re.I 使匹配对大小写不敏感line = "Cats are smarter than dogs"matchObj1 = re.match(r'(.*) are (.*?) .*', line, re.M|re.I)matchObj2 = re.match(r'(.*) smarter (.*?) .*', line, re.M|re.I)matchObj3 = re.match(r'(.*) than (.*)', line, re.M|re.I)print(matchObj1)print(matchObj2)print(matchObj3)## # Noneif matchObj1: print ("matchObj1.group() : ", matchObj1.group()) print ("matchObj1.group(1) : ", matchObj1.group(1)) print ("matchObj1.group(2) : ", matchObj1.group(2))else: print ("No match!!")if matchObj2: print ("matchObj2.group() : ", matchObj2.group()) print ("matchObj2.group(1) : ", matchObj2.group(1)) print ("matchObj2.group(2) : ", matchObj2.group(2))else: print ("No match!!")if matchObj3: print ("matchObj3.group() : ", matchObj3.group()) print ("matchObj3.group(1) : ", matchObj3.group(1)) print ("matchObj3.group(2) : ", matchObj3.group(2))else: print ("No match!!")# matchObj1.group() : Cats are smarter than dogs# matchObj1.group(1) : Cats# matchObj1.group(2) : smarter# matchObj2.group() : Cats are smarter than dogs# matchObj2.group(1) : Cats are# matchObj2.group(2) : than# matchObj3.group() : Cats are smarter than dogs# matchObj3.group(1) : Cats are smarter# matchObj3.group(2) : dogs
import re# 点 是匹配单个字符# 星是前面的东西出现0次或无数次# 点星就是任意字符出现0次或无数次str = "a b a b"matchObj1 = re.match(r'a(.*)b', str, re.M|re.I)matchObj2 = re.match(r'a(.*?)b', str, re.M|re.I)print("matchObj1.group() : ", matchObj1.group())print("matchObj2.group() : ", matchObj2.group())# matchObj1.group() : a b a b# matchObj2.group() : a bre.search
扫描整个字符串并返回第一个成功的匹配。
re.search(pattern, string, flags=0)
import reline = "cats are smarter than dogs"matchObj = re.match(r'dogs',line,re.M|re.I)matchObj1= re.search(r'dogs',line,re.M|re.I)matchObj2= re.match(r'(.*) dogs',line,re.M|re.I)if matchObj: print ("match --> matchObj.group() : ", matchObj.group())else: print ("No match!!")if matchObj1: print ("match --> matchObj1.group() : ", matchObj1.group())else: print ("No match!!")if matchObj2: print ("match --> matchObj2.group() : ", matchObj2.group())else: print ("No match!!")# No match!!# match --> matchObj1.group() : dogs# match --> matchObj2.group() : cats are smarter than dogsre.compile
re.compile是将正则表达式转换为模式对象
这样可以更有效率匹配。使用compile转换一次之后,以后每次使用模式时就不用进行转换
三、检索和替换
re.sub 替换字符串
re.sub('被替换的','替换成的',a)# 把FBI替换成BBQimport rea = 'abcFBIabcCIAabc'r = re.sub('FBI','BBQ',a)print(r)# 把FBI替换成BBQ,第4参数写1,证明只替换第一次,默认是0(无限替换)import rea = 'abcFBIabcFBIaFBICIAabc'r = re.sub('FBI','BBQ',a,1)print(r)# abcBBQabcCIAabc# abcBBQabcFBIaFBICIAabc# 把函数当参数传到sub的列表里,实现把业务交给函数去处理,例如将FBI替换成$FBI$import rea = 'abcFBIabcFBIaFBICIAabc'def 函数名(形参): 分段获取 = 形参.group() # group()在正则表达式中用于获取分段截获的字符串,获取到FBI return '$' + 分段获取 + '$'r = re.sub('FBI',函数名,a)print(r)以上是"python的正则表达式怎么用"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
字符
正则
表达式
模式
贪婪
字符串
函数
参数
之间
位置
内容
篇文章
特殊
成功
单个
多个
大小
字母
对象
就是
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网与科技
上海挚品互联网科技有限公司
科技互联网公司装修
互联网科技的
狮子座互联网科技
互联网科技公司官网
互联网科技缩写
四川狮子座互联网科技
甘肃拓世互联网科技有限公司
苏州五指互联网络科技有限
互联网保险科技创业
工业互联网等科技实现智能化赋能
中科明德北京互联网科技
互联网企业科技类企业如何做账
35岁以上互联网科技行业
中国新注册互联网科技
互联网科技企业商标注意事项
湖北辰鑫科技互联网
版纳互联网科技选哪家
颐高云石互联网科技
互联网高科技
保险科技 互联网保险
上海喔噻互联网科技
深圳国际航运科技和互联网
以后互联网后是啥科技
互联网5g黑科技有哪些
深圳育鹏互联网科技有限公司招聘
互联网科技的全部知识
江苏互联网智能科技产品出厂价
求路客互联网科技电话