Python 标准库模块 - re

Python022

Python 标准库模块 - re,第1张

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

预定义字符:

\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次

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库默认采取贪婪匹配,即输出匹配最长的子串