正则表达式(re模块):
re模块为python的内置模块,不需要下载。
语法:
正则:
. :通配符(除\n)
[]: 匹配 括号内的任意单个字符
|:表示或
\s:匹配 空格
\S:匹配 非空格
\w:匹配 字母
\W:匹配 非字母
\ :转义字符
\d:匹配 数字
\D:匹配 非数字
\b:匹配 单词边界
\B:匹配 非单词边界
^:表示字符串起始
$ :表示字符串结束
?:表示前一个字母存在一次或不存在
+:表示前一个字符出现至少一次
{m}:表示前一个字符出现m次
{m,}:表示前一个字符至少出现m次
{m,n}:表示前一个字符出现从m到n次
*:表示前一个字符出现(不限次数)或没出现
():对匹配到的字符串进行分组,方便提取。
(?P<名字>):对分的组进行取别名
\num:表示与第num组相同
贪婪和非贪婪:
python中默认是贪婪的。
贪婪:在一个字符串中,正则表达式的匹配符会尽可能多的进行匹配。如:用.*来匹配‘123456’,默认是会全部匹配上的。
非贪婪:在可能会尽可能多的匹配符后加上?就会变成非贪婪。如.*?匹配‘123456’,就会匹配到‘1’。
贪婪和非贪婪主要是在分组后组内写的,主要是确保提取的数据正好是我们想要的。
re模块使用:
re.match(正则表达式,字符串,参数):对字符串从头进行匹配,正则要能与从头开始算的字符串的一部分匹配上,返回该字符串。参数主要是re.S(让.匹配上\n)
re.find(正则表达式,字符串,参数):找到字符串中第一个能匹配正则的字符串,并返回该字符串。参数同上。
re.findall(正则表达式,字符串,参数):找出所有字符串中能匹配正则的字符串。返回值为一个装有所有字符串的列表。
re.search(正则表达式,字符串,参数):匹配整个字符串,并返回第一个成功的匹配。如果匹配失败,则返回None
re.finditer(正则表达式,字符串,参数):匹配整个字符串,返回一个迭代器,每个迭代元素是match对象,可以通过对象.group('别名')取出分组里的数据。