python正则表达式,贪婪模式,非贪婪模式

275 阅读2分钟

正则表达式

知识点一:re模块

1、findall方法:

在字符串中找到正则表达式所匹配的所有子串,并返回一个列表 ,如果没有找到匹配的,则返回空列表

2、match方法

re.match 尝试从字符串的起始位置匹配一个模式,匹配成功 返回的是一个匹配 对象(这个对象包含了我们匹配的信息),如果不是起始位置匹配成功的话,match()返回的是空

注意:match只能匹配到一个

3、search方法

re.search 扫描整个字符串,匹配成功 返回的是一个匹配对象(这个对象包含了我们匹配的信息)

注意:search也只能匹配到一个,找到符合规则的就返回,不会一直往后找

re.match与re.search的区别: re.match只匹配字符串的开始位置找,如果字符串开始不符合正则表达式,则匹配失败, re.search:匹配整个字符串,如果一直找不到则,返回是空的,没有结果

4、元字符

单字符匹配

字符描述
.匹配任意1个字符(除了\n)
[]匹配 [] 中列举的字符
\d匹配数字,即0-9
\D匹配非数字,即不是数字
\s匹配空白,即 空格,tab键
\S匹配非空白
\w匹配单词符,即a-z、A-Z、0-9、_
\W匹配非单词字符

代表数量的元字符

字符描述
*匹配前一个字符出现0次或者无限次,即可有可无
+匹配前一个字符出现1次或者无限次,即至少有1次
匹配前一个字符出现0次或者1次,即要么有1次,要么没有
{m}匹配前一个字符出现m次
{m,}匹配前一个字符至少出现m次
{m,n}匹配前一个字符出现从m到n次

代表边界的元字符

字符描述
^匹配字符串开头
$匹配字符串结尾
\b匹配一个单词的边界
\B匹配非单词边界

分组匹配

字符描述
|匹配左右任意一个表达式
(ab)将括号中的字符作为一个分组

5、贪婪和非贪婪

正则默认都是用贪婪模式去匹配数据的,就是尽可能多的匹配符合要求的数据,

在非贪婪模式下,始终找最短匹配