第一节:Re(正则表达式)库入门
正则表达式是用来简洁表达一组字符串的表达式。它可以用来表达文本类型的特征。
正则表达式编译:将符合正则表达式语法的字符串转换成正则表达式特征。
1.正则表达式的语法
例如:
P(Y|YT|YTH|YTHO)?N
正则表达式语法由字符和操作符构成。正则表达式的常用操作符见表1.1所示。
表1.1 正则表达式的常用操作符
表1.2 经典正则表达式实例
2.Re库的基本使用
(1).正则表达式的表示类型
①raw string类型(原生字符串类型)
re库采用raw string类型表示正则表达式,表示为:r’text’。例如中国境内邮政编码可以表示为:r’[1-9]\d’。
raw string(原生字符串)是不包含转移符的字符串。Re库的主要功能函数如表1.3所示。
表1.3 Re库主要功能函数
(2)功能函数的基本介绍
①re.search(pattern, string, flags=0)
在一个字符串中搜索匹配正则表达式的第一个位置,返回match对象。后面参数中,pattern是正则表达式的字符串或原生字符串表示;string是待匹配字符串,flags是使用时的控制标记。标记包括re.I(re.IGNORECASE)忽略正则表达式的大小写,[A-Z]能够匹配小鞋字符;re.M(re.MULTILINE)正则表达式中的^操作符能够将给定字符串的每行当作匹配开始;re.S(re.DOTALL)正则表达式中的.操作符能够匹配所有字符,默认匹配除换行外的所有字符。
②re.findall(pattern, string, flags=0)
例程:
结果:
['100081', '100084', '710071']
③re.split(pattern, string, maxsplit=0, flags=0)
maxsplit表示最大分个数,剩余部分作为最后一个元素输出。
代码:
结果:
['BIT ', ' TSU100084 XDU710071']
④re.finditer(pattern, string, flags=0)
代码:
结果:
100081
100084
710071
⑤re.sub(pattern,rep,string, count=0,flags=0)
rep是替换匹配字符串的字符串,count代表匹配的最大次数。
例程:
结果:
BIT xiaoao TSU100084 XDU710071
(3)Re库的另一种等价用法
例如,原来我们使用这种函数式用法,这是一种一次性操作。
现在我们可以采用面向对象用法,可以在编译后多次操作。
将正则表达式的字符串形式编译成正则表达式对象。
3.Re库的match对象
match对象的属性如表1.4所示。
表1.4 Match对象的属性
4.Re库的贪婪匹配和最小匹配
(1)贪婪匹配
Re库默认采用贪婪匹配,即输出匹配最长的子串。例如输入:
结果为:
PYANBNCNDN
(2)最小匹配
代码如下:
结果:
PYAN
最小匹配操作符如表1.5所示。
表1.5 最小匹配操作符
领取专属 10元无门槛券
私享最新 技术干货