千家信息网

Python中怎么使用正则表达式

发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,Python中怎么使用正则表达式?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。常用的正则符号在进入字符串的匹配之前,先来了解一下都有哪些
千家信息网最后更新 2025年02月03日Python中怎么使用正则表达式

Python中怎么使用正则表达式?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

常用的正则符号

在进入字符串的匹配之前,先来了解一下都有哪些常用的正则符号,见下表所示:

如果读者能够比较熟练地掌握上表中的内容,相信在字符串处理过程中将会游刃有余。如前文所说,本节将基于正则表达式完成字符串的查询、替换和分割操作,这些操作都需要导入re模块,并使用如下介绍的几个函数。

字符串的匹配查询

re模块中的findall函数可以对指定的字符串进行遍历匹配,获取字符串中所有匹配的子串,并返回一个列表结果。该函数的参数含义如下:

findall(pattern, string, flags=0)

pattern:指定需要匹配的正则表达式。

string:指定待处理的字符串。

flags:指定匹配模式,常用的值可以是re.I、re.M、re.S和re.X。re.I的模式是让正则表达式对大小写不敏感;re.M的模式是让正则表达式可以多行匹配;re.S的模式指明正则符号.可以匹配任意字符,包括换行符 ;re.X模式允许正则表达式可以写得更加详细,如多行表示、忽略空白字符、加入注释等。

字符串的匹配替换

re模块中的sub函数的功能是替换,类似于字符串的replace方法,该函数根据正则表达式把满足匹配的内容替换为repl。该函数的参数含义如下:

sub(pattern, repl, string, count=0, flags=0)

pattern:同findall函数中的pattern。

repl:指定替换成的新值。

string:同findall函数中的string。

count:用于指定最多替换的次数,默认为全部替换。

flags:同findall函数中的flags。

字符串的匹配分割

re模块中的split函数是将字符串按照指定的正则表达式分隔开,类似于字符串的split方法。该函数的具体参数含义如下:

split(pattern, string, maxsplit=0, flags=0)

pattern:同findall函数中的pattern。

maxsplit:用于指定最大分割次数,默认为全部分割。

string:同findall函数中的string。

flags:同findall函数中的flags。

实战案例

如果上面的函数和参数含义都已经掌握了,还需要进一步通过案例加强理解,接下来举例说明上面的三个函数:

# 导入用于正则表达式的re模块 import re # 取出字符串string8中所有的天气状态 string8 = "{ymd:'2018-01-01',tianqi:'晴',aqiInfo:'轻度污染'},{ymd:'2018-01-02',tianqi:'阴~小雨',aqiInfo:'优'},{ymd:'2018-01-03',tianqi:'小雨~中雨',aqiInfo:'优'},{ymd:'2018-01-04',tianqi:'中雨~小雨',aqiInfo:'优'}" # 基于正则表达式使用findall函数 print(re.findall("tianqi:'(.*?)'", string8)) # 取出string9中所有含O字母的单词 string9 = 'Together, we discovered that a free market only thrives when there are rules to ensure competition and fair play, Our celebration of initiative and enterprise' # 基于正则表达式使用findall函数 print(re.findall('w*ow*',string9, flags = re.I)) # 将string10中的标点符号、数字和字母删除 string10 = '据悉,这次发运的4台蒸汽冷凝罐属于国际热核聚变实验堆(ITER)项目的核二级压力设备,先后完成了压力试验、真空试验、氦气检漏试验、千斤顶试验、吊耳载荷试验、叠装试验等验收试验。' # 基于正则表达式使用sub函数 print(re.sub('[,。、a-zA-Z0-9()]','',string10)) # 将string11中的每个子部分内容分割开 string11 = '2室2厅 | 101.62平 | 低区/7层 | 朝南  上海未来 - 浦东 - 金杨 - 2005年建' # 基于正则表达式使用split函数 split = re.split('[-| ]', string11) print(split) # 分割结果的清洗 split_strip = [i.strip() for i in split] print(split_strip) out: ['晴', '阴~小雨', '小雨~中雨', '中雨~小雨'] ['Together', 'discovered', 'only', 'to', 'competition', 'Our', 'celebration', 'of'] 据悉这次发运的台蒸汽冷凝罐属于国际热核聚变实验堆项目的核二级压力设备先后完成了压力试验真空试验氦气检漏试验千斤顶试验吊耳载荷试验叠装试验等验收试验 ['2室2厅 ', ' 101.62平 ', ' 低区/7层 ', ' 朝南 ', ' 上海未来 ', ' 浦东 ', ' 金杨 ', ' 2005年建'] ['2室2厅', '101.62平', '低区/7层', '朝南', '上海未来', '浦东', '金杨', '2005年建']

如上结果所示,在第一个例子中通过正则表达式"tianqi:'(.*?)'"实现目标数据的获取,如果不使用括号的话,就会产生类似"tianqi:'晴'", "tianqi:'阴~小雨'"这样的值,所以,加上括号就是为了分组,且仅返回组中的内容;

第二个例子并没有将正则表达式写入圆括号,如果写上圆括号也是返回一样的结果,所以findall就是用来返回满足匹配条件的列表值,如果有括号,就仅返回括号内的匹配值;

第三个例子使用替换的方法,将所有的标点符号换为空字符,进而实现删除的效果;

第四个例子是对字符串的分割,如果直接按照正则 '[,。、a-zA-Z0-9()]' 分割的话,返回的结果中包含空字符,如 '2室2厅' 后面就有一个空字符。为了删除列表中每个元素的首尾空字符,使用了列表表达式,并且结合字符串的strip方法完成空字符的压缩。

看完上述内容,你们掌握Python中怎么使用正则表达式的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

正则 函数 表达式 字符 字符串 试验 小雨 内容 方法 模块 模式 空字符 符号 结果 中雨 例子 压力 参数 含义 括号 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 绘制一个螺旋式的软件开发策略 计算机网络技术专业有分配吗 福州互联网科技公司骗 数据库关联查询 中信银行软件开发中心年假 汽车空调控制软件开发 网络安全管理实践视频教程 软件开发现金比率平均值 漏洞对网络安全的危害 宁波北仑区联想机架式服务器 以下哪一项不属于数据库产品 为什么数据库用sql语言 留存网络安全日志 桦川软件开发者在线咨询 博兴客户管理软件开发公司 传奇私服云服务器上架设教程 机关成立网络安全检查工作组 吕鑫数据库软件开发 arcaea服务器在哪 国土局网络安全工作 辽宁梦泽互联网科技有限公司 中小企业网络安全十大战术建议 phpstudy运行数据库 人才数据库未找到 江苏大规模分布式存储数据库 计算机网络技术新方向 校园网络安全事件处置 套装软件开发者开发 互联网和科技合作 如何看期刊是否为同一个数据库
0