重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

pythonre函数库 Andre Python

Python 标准库模块 - re

re模块被称为正则表达式,其作用为,创建一个“规则表达式”,用于验证和查找符合规则的文本,广泛用于各种搜索引擎、账户密码的验证等。

成都创新互联公司2013年成立,先为秀屿等服务建站,秀屿等地企业,进行企业商务咨询服务。为秀屿企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

预定义字符:

\d:匹配所有的十进制数字0-9

\D:匹配所有的非数字,包含下划线

\s:匹配所有空白字符(空格、TAB等)

\S:匹配所有非空白字符,包含下划线

\w:匹配所有字母、汉字、数字a-z A-Z 0-9

\W:匹配所有非字母、汉字、数字,包含下划线

特殊字符:

$:匹配一行的结尾(必须放在正则表达式最后面)

^:匹配一行的开头(必须放在正则表达式最前面)

*:前面的字符可以出现0次或多次(0~无限)

+:前面的字符可以出现1次或多次(1~无限)

?:变"贪婪模式"为"勉强模式",前面的字符可以出现0次或1次

.:匹配除了换行符"\n"之外的任意单个字符

|:两项都进行匹配

[ ]:代表一个集合,有如下三种情况

[abc]:能匹配其中的单个字符

[a-z0-9]:能匹配指定范围的字符,可取反(在最前面加入^)

[2-9] [1-3]:能够做组合匹配

{ }:用于标记前面的字符出现的频率,有如下情况:

{n,m}:代表前面字符最少出现n次,最多出现m次

{n,}:代表前面字符最少出现n次,最多不受限制

{,m}:代表前面字符最多出现n次,最少不受

{n}:前面的字符必须出现n次

python如何安装re库

re库是Python关于正则表达式的一个内置模块,使用时无需下载,直接import即可。我们首先来看看re.py自己头部的注释是如何描述自己的:

这个模块提供与Perl语言中类似的正则表达式匹配操作,支持bytes和unicode两种格式的字符串,处理的字符串可以包含空字符以及超出ASCII码范围的字符(比如中文字符)。

正则表达式中既有'A'、'a'这种就代表自身的一般字符,又有一些具有特定含义的特殊字符,如|、(等。特殊字符既可以作为一个单纯的值表示它自身,也可以影响它周边1的正则表达式的解释。

re库中还包含一些特殊的字符序列,由\和一个字符组成的特殊序列在下表列出,如果\之后的字符不在下列表格中,正则表达式将会匹配字符本身,如\c匹配的就是字符c本身。我们发现如果 \小写字母 代表了某一含义,那么对应的 \大写字母 常常代表它的补集。

re库的用法介绍

re库是python的标准库

re库采用raw string类型表示正则表达式,表示为:r'test'

原生字符串(raw string)是不包含转义符的字符串

例子:

爬取好房通的网站 优优好房 的房源时用到了re库解析文本,

raw string:

r'[1-9]\d{5}'

r'\d{3}-\d{8}|\d{4}-\d{7}'

string:

'[1-9]\\d{5}'

'\\d{3}-\\d{8}|\\d{4}-\\d{7}'

Re库主要功能函数

re.search(pattern, string, flags=0)

pattern:正则表达式的字符串或原生字符串表示

string:待匹配字符串

flags:正则表达式使用时的控制标记

re.match(pattern,string,flags=0)

因为match为从开始位置开始匹配,使用时要加if进行判别返回结果是否为空,否则会报错

re.findall(pattern,string,flags=0)

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

maxsplit为最大分割数,剩余部分作为最后一个元素输出

re.finditer(pattern,string,flags=0)

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

repl是用来替换的字符串,count为替换次数

Re库的另一种等价用法

Re库的函数式用法为一次性操作,还有一种为面向对象用法,可在编译后多次操作

1regex = re.compile(pattern,flags=0)

通过compile生成的regex对象才能被叫做正则表达式

Re库的match对象

Match对象的属性

Match对象的方法

实例

Re库的贪婪匹配和最小匹配

Re库默认采取贪婪匹配,即输出匹配最长的子串

re库是python的标准库

re库采用raw string类型表示正则表达式,表示为:r'test'

原生字符串(raw string)是不包含转义符的字符串

例子:

爬取好房通的网站 优优好房 的房源时用到了re库解析文本,

raw string:

r'[1-9]\d{5}'

r'\d{3}-\d{8}|\d{4}-\d{7}'

string:

'[1-9]\\d{5}'

'\\d{3}-\\d{8}|\\d{4}-\\d{7}'

Re库主要功能函数

re.search(pattern, string, flags=0)

pattern:正则表达式的字符串或原生字符串表示

string:待匹配字符串

flags:正则表达式使用时的控制标记

re.match(pattern,string,flags=0)

因为match为从开始位置开始匹配,使用时要加if进行判别返回结果是否为空,否则会报错

re.findall(pattern,string,flags=0)

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

maxsplit为最大分割数,剩余部分作为最后一个元素输出

re.finditer(pattern,string,flags=0)

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

repl是用来替换的字符串,count为替换次数

Re库的另一种等价用法

Re库的函数式用法为一次性操作,还有一种为面向对象用法,可在编译后多次操作

1regex = re.compile(pattern,flags=0)

通过compile生成的regex对象才能被叫做正则表达式

Re库的match对象

Match对象的属性

Match对象的方法

实例

Re库的贪婪匹配和最小匹配

Re库默认采取贪婪匹配,即输出匹配最长的子串

python中re库的常见用法

. 匹配除换行符外的任意字符

\d 匹配数字

\D 匹配非数字

\w 匹配数字字母下划线,支持中文

\W 小写w的反集

[abc] 匹配abc中任意一个

[a-f] 匹配字母a到f中的任意一个

x|y 匹配x或者y

^ 匹配字符串的开头

$ 匹配字符串的结尾

{3,5} 匹配次数,最少3个,最多5个

{3,} 至少匹配3次

* 匹配前一个字符,0次或多次

+ 匹配前一个字符,1次或多次

? 当前面不是数量表达式时,代表匹配0次或1次

举个栗子:

findall()函数的作用是匹配所有符合条件字符串,并以列表形式返回

由于.是匹配除换行符外的所有字符,{3,5} 匹配次数,最少3个,最多5个,在默认的贪婪模式下会匹配最多的字符,所以在列表中,字母a开头的字符串后面都跟了5个字符。

可以看到在非贪婪模式下,列表中的每一项都匹配最少的字符数。

从前往后,匹配到符合条件的最短的每一个字符串

边界字符:

^ 限定开头

$ 限定结尾

匹配分组:

() 提取出来的只有括号里匹配到的部分

上文中已经用到这个方法了,返回匹配到的字符串列表,如果没有匹配到的内容,则返回空列表。

flags参数是可以省略的,不省略时代表具有其他特殊的功能,如忽略大小写,忽略换行符等,re.S代表匹配时忽略换行符

re.search()和re.findall()的参数是一样的,只是返回结果不同,如果匹配到了,就返回该结果的正则表达式对象;如果没有匹配到,则返回None

使用re.search()返回匹配到的第一个字符串的正则表达式对象,找到了就会停止匹配。因此这个函数比较适合在一个大文本中找第一个出现的字符串。

若想让这个字符串展示出来,还需要借助group()函数。

举个栗子:

这个函数的作用是将正则表达式编译为一个正则表达式对象,如果要多次使用这个正则表达式的话,可以先编译,然后复用,使程序更高效一些,对这个对象继续使用.match(string)就可以显示匹配到的正则表达式对象,后续如果想要获取具体内容的话,和上面是一眼国的,直接使用group(0)就可以啦。

如果不考虑复用的话,和re.mach(pattern, string)的效果是一样的。

从运行结果也可以看出,re.match()和re.search()的区别,虽然二者都会返回匹配到的正则表达式对象,但是re.match()是从字符串的最开始位置开始匹配的,如果最开始的字符不匹配则会直接返回None;而re.search()则会一直往后找,直到找到第一个符合条件的字符串。

re.sub()函数用于替换字符串中的匹配项

举个栗子:

将所有数字替换为了一个空格。


名称栏目:pythonre函数库 Andre Python
标题来源:http://cqcxhl.com/article/hidcpc.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP