【Python】正则表达式基础知识

正则表达式(regular expression)是一种处理字符串的工具,功能十分强大。正则表达式使用预定义的特定模式去匹配一类具有共同特征的字符串,主要用于字符串处理,可以快速,准确地完成复杂的查找,替换等处理要求。

正则表达式的主要内容如下。

 

【Python】正则表达式基础知识_第1张图片

 

Python标准库的re模块提供了正则表达式操作所需要的功能,可以直接使用re。

re.search(pattern,string[,flags])是re中常用的一个常用函数,功能是扫描整个字符串并返回第一次匹配成功的对象,如果匹配失败,返回None,

参数解释:

pattern:匹配的正则表达式;

string:要匹配的字符串;

flags:标志位,用于控制正则表达式的匹配方式。

下面将用re.search()说明正则表达式的具体用法。

1.原子

原子是正则表达式中最基本的组成单位,每个正则表达式中至少要包含一个原子,常见的原子有以下几类:

(1)普通字符作为原子

普通字符如:数字,大小写字母,下划线等。以下程序中,使用"yue"为原子:

【Python】正则表达式基础知识_第2张图片

结果为:

可以看到,返回了一个match对象,span表示匹配成功的结果在原字符串中的位置。

(2)非打印字符作为原子

所谓的非打印字符,指的是一些在字符串中用于格式控制的符号,比如换行符和制表符等。

比如,可以输入以下程序实现换行符的匹配:

【Python】正则表达式基础知识_第3张图片

结果为:

可以看到,string中包含多行数据,即包含换行符,因此能够匹配成功。

若程序修改如下,则不能匹配成功:

【Python】正则表达式基础知识_第4张图片

结果为:

(3)通用字符作为原子

所谓的通用字符,即一个原子可以匹配一类字符。常用的通用字符如下:

【Python】正则表达式基础知识_第5张图片

比如,可以使用"\w\dpython\w"对"python"进行匹配,字符后是一个字母,数字或下划线,字符前是一个任意的十进制数,在前一个位置是一个字母,数字或下划线。可以这样输入程序:

【Python】正则表达式基础知识_第6张图片

结果为:

(4)原子表

使用原子表,可以定义一组地位平等的原子,匹配的时候会取该原子表中的任意一个原子进行匹配。原子表用[]表示,例如[xyz]就是一个原子表。若正则表达式为"[xyz]py",对应的源字符串是"xpython",那么会匹配出结果"xpy"

类似,[^]表示出来中括号里面的原子均不可以匹配,如"[^xyz]py"可以匹配"apy",但不可以匹配"xpy"。

【Python】正则表达式基础知识_第7张图片

结果为:

2.元字符

所谓的元字符,就是一些具有特殊含义的字符,如下是一些常见的元字符:

【Python】正则表达式基础知识_第8张图片

(1)任意匹配元字符

任意匹配元字符"."可以匹配除换行符以外的任意字符,如".python..."可以匹配一个"python"前面有1个,后面有3个除换行符以外字符的字符。

【Python】正则表达式基础知识_第9张图片

结果为:

(2)边界限制元字符

边界限制元字符,可以使用"^"匹配字符串的开始,使用"$"匹配字符串的结束。

【Python】正则表达式基础知识_第10张图片

结果为:

(3)限定符

常见的限定符包括*?+{n}、{n,}、{n,m},具体含义可参照表格。

 

【Python】正则表达式基础知识_第11张图片

结果为:

在"pattern1"中,"py"与"n"之间可以是除换行符以外的任意字符,该字符可以出现0次,1次或多次;

在"pattern2"中,"d"恰好出现2次;在"pattern3"中,"d"恰好出现3次;

在"pattern4"中,"d"至少出现2次,所以,只要满足格式,就会在源字符串中尽可能多地匹配字符(即贪婪模式

(4)模式选择符

使用模式选择符"|",可以设置多个模式,匹配时,可以从中选择任意一个模式匹配。如正则表达式"php|python"中,"php"和"python"均满足匹配条件。

【Python】正则表达式基础知识_第12张图片

结果为:

(5)模式单元符

模式单元符"()",可以将一些原子组合成一个大原子使用,小括号括起来的部分会被当作一个整体。

【Python】正则表达式基础知识_第13张图片

结果为:

 

3.模式修正

所谓的模式修正符,即可以在不改变正则表达式的情况下,通过模式修正符改变正则表达式的含义。

【Python】正则表达式基础知识_第14张图片

用例子说明:

【Python】正则表达式基础知识_第15张图片

结果为:

"result2"由于忽略了大小写,得以匹配成功。

4.两种模式

当正则表达式中包含能重复的限定符时,通常会尽可能多地匹配字符,即贪婪模式

但有些情况下,我们需要尽可能少地匹配,此时需要启用懒惰模式。只需要在前面给出的限定符后面加上"?"就可以将贪婪模式转化为懒惰模式。

例如:

【Python】正则表达式基础知识_第16张图片

结果为:

觉得文章不错的欢迎关注我的WX公众号:速学Python
我是一名后台开发工程师,计算机本硕,专注分享技术干货/编程资源/求职面试/成长感悟等,关注送20GPython资源和自己整理的一份帮助不少人拿下offer的视频及书籍

                                                                    

 

你可能感兴趣的:(python,Python,正则表达式,标准库,代码)