手机版

巧用Python中的正则表达式 一定要掌握规律性

时间:2021-08-23 来源:互联网 编辑:宝哥软件园 浏览:

前言

正则表达式是从字符串中寻找规则,并通过抽象符号表达出来。例如,对于2,5,10,17,26,37这样的数字序列,如何计算第七个值,首先要找到序列的规则,然后用表达式n2 1来描述它的规则,然后得到第七个值为50。对于需要匹配的字符串,发现规则也是第一步。本文主要利用正则表达式完成字符串的查询匹配、替换匹配和分段匹配。

常用常规符号

在输入字符串匹配之前,我们先来看看常用的常规符号,如下表所示:

如果读者能熟练掌握上表的内容,我相信他们就能轻松处理字符串。如前所述,本节将基于正则表达式完成字符串的查询、替换和分段。所有这些操作都需要导入到re模块中,并使用下面描述的几个函数。

字符串匹配查询

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

findall(模式、字符串、标志=0)

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

String:指定要处理的字符串。

标志:指定匹配模式。公共值可以是re。我,re。m,re。s和re.x. The的模式。我是让正则表达式不区分大小写;re的模式。m是让正则表达式多行匹配;re的模式。s表示常规符号。它可以匹配任何字符,包括换行符;Re。x模式允许更详细地编写正则表达式,例如多行表示、忽略空白字符、添加注释等。

字符串的匹配替换

re模块中子函数的作用是替换,类似于字符串的替换方法。这个函数根据正则表达式用repl替换匹配的内容。该函数的参数具有以下含义:

sub(模式,repl,字符串,计数=0,标志=0)

模式:与findall函数中的模式相同。

Repl:指定要替换的新值。

String:与findall函数中的字符串相同。

计数:用于指定最大替换次数。默认值是所有替换。

标志:与findall函数中的标志相同。

字符串的匹配分段

re模块中的Split函数是一种根据指定的正则表达式分离字符串的split方法,类似于字符串。该功能的具体参数具有以下含义:

拆分(模式,字符串,maxsplit=0,标志=0)

模式:与findall函数中的模式相同。

Maxsplit:用于指定拆分的最大数量,默认值为全部拆分。

String:与findall函数中的字符串相同。

标志:与findall函数中的标志相同。

实际案例

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

#导入正则表达式的re模块导入re #检索字符串中的所有天气条件string8=' {ymd:' 2018-01-01 '、天晴3360 '晴天'、aqiInfo: '光污染' }、{ymd:'2018-01-02。天齐: '阴~小雨',aqiInfo: '优' },{YMD :' 2018-01-03 ',天齐: '小雨~中雨',AQIINFO 3360 '优' },{YMD :' 2018。AqiInfo:' You'}' #使用findall函数打印(re。findall('天齐: '(。*?)'',string8)) #把string9='中带有o字母的单词全部拿出来,我们一起发现,只有当有规则来确保竞争和公平竞争时,自由市场才会繁荣,我们对主动性和进取心的庆祝' #使用findall函数print (re。findall ('w * ow * ',string9,Flags=re。I)) #删除string10中的标点符号、数字和字母='据悉,本次发运的4台蒸汽冷凝罐属于国际热核实验堆(ITER)项目的核二次压力设备,已先后完成压力试验、真空试验、氦泄漏试验、千斤顶试验、吊耳载荷试验、堆垛试验等验收试验'#使用基于正则表达式的子函数print(re.sub('[,)。a-zA-Z0-9()]','',String10)) #将string11的每个子部分分成string11='2室2厅| 101.62平|低区/7层|面向南上海未来-浦东-金阳-2005年建成' #使用拆分函数split=re.split('[-|]'基于正则表达式, string 11)Print(Split)# Split _ strip=[I . strip()for I in Split]Print(Split _ strip)out :[' sunny ','多云~小雨','小雨~中雨','中雨~小雨'][' Together ']discovered ',' only ',' to ',' competition ',' Our ','庆典',' Of']据悉,本次发运的蒸汽冷凝罐属于国际热核实验堆项目的核二次加压设备,已先后完成试压等验收试验, 真空试验、氦气泄漏试验、千斤顶试验、吊耳载荷试验和堆垛试验['2室2厅',' 101.62层','低区/7层','朝南','上海未来','浦东','金阳' 2005年建成'] ['2室2厅',' 101.62层','低区/7层','朝南','上海未来','浦东','金阳',' 2005年建成']如上述结果所示,在第一个例子中,正则表达式'天齐3360 '(。 *)' '实现目标数据的采集。如果不使用括号,将生成类似“天晴:”和“天晴3360”多云~小雨”的值。因此,添加括号进行分组,只返回组中的内容;

在第二个示例中,正则表达式没有写在括号中。如果您写圆括号,您将返回相同的结果,所以findall用于返回满足匹配条件的列表值。如果有括号,则只返回括号中匹配的值;

第三个例子,用替换法将所有标点符号替换为空字符,从而达到删除的效果;

第四个例子是字符串的分段,如果你遵循常规的'[,a-zA-Z0-9()]',返回的结果包含空字符,例如“2个房间2个大厅”后面有一个空字符。为了删除列表中每个元素开头和结尾的空白字符,使用列表表达式,并结合string的strip方法对空白字符进行压缩。

摘要

以上就是边肖介绍的Python中正则表达式的巧妙运用。你必须掌握规律性,希望对大家有帮助。如果你有任何问题,请给我留言,边肖会及时回复你的!

版权声明:巧用Python中的正则表达式 一定要掌握规律性是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。