Python中正则表达式的巧妙用法是怎么样的

技术Python中正则表达式的巧妙用法是怎么样的Python中正则表达式的巧妙用法是怎么样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 前言正则表达

Python中正则表达式的巧妙用法是什么?针对这个问题,本文详细介绍了相应的分析和解决方法,希望能帮助更多想要解决这个问题的小伙伴找到更简单易行的方法。

前言

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

Python中正则表达式的巧妙用法是怎么样的

常用的正则符号

在输入字符串匹配之前,让我们了解一下常用的常规符号,如下表所示:

Python中正则表达式的巧妙用法是怎么样的

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

字符串的匹配查询

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

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

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

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

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

字符串的匹配替换

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

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

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

Repl:指定要替换的新值。

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

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

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

字符串的匹配分割

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

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

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

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

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

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

实战案例

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

#导入正则表达式import re的re模块#检索string8=' {ymd:' 2018-01-01 '、tianqi3360 ' sunny '、aqiInfo: '轻度污染' }、{ymd:' 2018-01-02 '中的所有天气条件。AqiInfo: '优' },{YMD :' 2018-01-03 ',天齐: '小雨到中雨',aqiInfo: '优' },{YMD :' 2018-01-04 ',天齐。)'',string8))#取出string9中所有带o字母的单词st。

ring9 = '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中正则表达式的巧妙用法是怎么样的问题的解答就分享到这里了,希望

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/50248.html

(0)

相关推荐

  • 应该如何选择虚拟主机

    技术应该如何选择虚拟主机这篇文章主要为大家展示了“应该如何选择虚拟主机”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“应该如何选择虚拟主机”这篇文章吧。虚拟主机是在网络服务器上

    攻略 2021年11月1日
  • 4k 10bit hdr 视频使用 svp 插帧, madvr 渲染教程

    技术4k 10bit hdr 视频使用 svp 插帧, madvr 渲染教程 4k 10bit hdr 视频使用 svp 插帧, madvr 渲染教程1 技术选型
    1.1 为什么用 MPC-BE 而不是

    礼包 2021年11月22日
  • 怎么使用MySQL中的select、distinct、limit

    技术怎么使用MySQL中的select、distinct、limit这篇文章主要讲解了“怎么使用MySQL中的select、distinct、limit”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路

    攻略 2021年11月10日
  • 常用Perl命令行参数应用的分析

    技术常用Perl命令行参数应用的分析本篇文章为大家展示了常用Perl命令行参数应用的分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Perl命令行应用介绍Perl有很多Perl

    攻略 2021年11月12日
  • centos8上安装mysql5.6

    技术centos8上安装mysql5.6 centos8上安装mysql5.61.下载5.6
    选择5.6.45,Red Hat Enterprise Linux,Linux 7https://dev.m

    礼包 2021年11月1日
  • 如何使用iOS实现仿高德首页推拉效果

    技术如何使用iOS实现仿高德首页推拉效果这篇文章主要介绍了如何使用iOS实现仿高德首页推拉效果,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。上面是实现的效

    攻略 2021年11月12日