一、正则表达式
正则表达式是用来简洁表达一组字符串的表达式。是通用的字符串表达框架,简洁表达一组字符串的表达式,针对字符串表达“简洁”和“特征”思想的工具,判断某字符串的特征归属。
用处:表达文本类型的特征;同时查找或替换一组字符串;匹配字符串的全部或部分。
编译:将符合正则表达式语法的字符串转换成正则表达式特征。
语法:正则表达式由字符和操作符构成。
正则表达式的常用操作符:
实例:
二、RE库的基本使用
RE库是python的标准库,主要用于字符串的匹配。
调用方法:import re
RE库使用raw string类型来表达正则表达式,表示为:r'text',例如:r'[1-9]\d{5}';也使用string类型,但是由于string类型中将斜杠理解为转义符,所以会更加繁琐,例如:'[1-9]\\d{5}'。综上,当正则表达式包含转义符时使用raw string。
re库的主要功能函数:
re.search(pattern,string,flags=0)
pattern:正则表达式的字符串或原生字符串表示
string:待匹配字符串
flags:正则表达式使用时的控制标记
例子:我们匹配的字符串是BIT100081
re.match(pattern,string,flags=0)
pattern:正则表达式的字符串或原生字符串表示
string:待匹配字符串
flags:正则表达式使用时的控制标记
仔细看下这个错误提示,NoneType这说明现在由match函数返回的变量match它并没有一个属性叫group,也就是说这个match是空的。我们知道,这边所用的正则表达式表示了一个中国区的邮政编码,而它从后边的string类型中,从起始位置开始匹配,但我们给出的string起始位置并不是邮政编码,因此它的正则表达式匹配结果应该是空。所以我们在使用之前一定要先判断这个match是不是空的。
re.findall(pattern,string,flags=0)
pattern:正则表达式的字符串或原生字符串表示
string:待匹配字符串
flags:正则表达式使用时的控制标记
re.split(pattern,string,maxsplit=0,flags=0)
pattern:正则表达式的字符串或原生字符串表示
string:待匹配字符串
maxsplit:最大分割数,剩余部分作为最后一个元素输出
flags:正则表达式使用时的控制标记
maxsplit=1表示只匹配第一个位置,匹配之后它将BIT分割出来
re.finditer(pattern,string,flags=0)
pattern:正则表达式的字符串或原生字符串表示
string:待匹配字符串
flags:正则表达式使用时的控制标记
re.sub(pattern,repl,string,count=0,flags=0)
pattern:正则表达式的字符串或原生字符串表示
repl:替换匹配字符串的字符串
string:待匹配字符串
count:匹配的最大替换次数
flags:正则表达式使用时的控制标记
RE库的另一种等价用法
re.compile(pattern,flags=0):将正则表达式的字符串形式编译成正则表达式对象。pattern:正则表达式的字符串或原生字符串表示,flags:正则表达式使用时的控制标记。
三、RE库的match对象
match对象就是一次匹配的结果,它包含了很多匹配的相关关系,
match对象的属性
只有经过compile的正则表达式才是真正的正则表达式,如果没经过,就是compile的一种表示。
四、Re库的贪婪匹配和最小匹配
r'PY.*n'表示以PY字母开头,以N结尾,之间可以有若干个字母的字符串。
贪婪匹配:RE库默认采用贪婪匹配,即输出匹配最长的子串。
输出最短的子串:
最小匹配操作符: