Day17 贪婪、非贪婪、re模块

2019-01-16  本文已影响0人  ququququ

一、贪婪和非贪婪

非贪婪:

在正则表达式中控制匹配不确定次数的符号后边可以加?,来表示尽可能少的匹配

在贪婪的时候,匹配是尽可能多的匹配。

注意:尽可能少是在能够匹配到的前提下尽可能少

以下都是贪婪匹配:

- *
- +
- ?
- {M,N}
- {M,}
- {,N}

import re

a = re.findall(r"a(\d+?)", 'a23b')
print(a) # ['2']
b = re.findall(r"a(\d+)", 'a23b')
print(b) # ['23']
    

二、re模块

1、complie(正则表达式)

将正则表达式转换成对象,编译后直接调用对象方法

2、fullmatch(正则表达式, 字符串)

正则表达式和字符串匹配,匹配成功返回对象,失败返回None。用途:检测账号,密码等

import re
    re_str = r'(\d\d)\.([a-z]+)'
    result = re.fullmatch(re_str, '12.adsf')

返回对象

a、span()

匹配到字符串在原字符串中的下标范围(结果是元祖)

b、star()和end()

匹配到的字符串在元字符中的开始下标和结束下标

c、group()

获取匹配到的字符串(结果是字符串)

d、string

获取原字符串

3、match(正则表达式, 字符串)

让字符串的开头和正则表达式匹配,匹配成功结果是匹配对象,否则是None

4、search(正则表达式, 字符串)

在字符串中匹配出一个符合正则表达式的子串,匹配成功结果是对象,否则是None

5、split(正则表达式, 字符串)

将字符串按照满足正则要求的子串进行切割(返回值是列表)

6、sub(正则表达式, 字符串1, 字符串2)

将字符串2中能够和正则表达式匹配的子串替换成字符串1,产生一个新的字符串

7、findall(正则表达式, 字符串)

在字符串中获取满足正则表达式的所有字符串(结果是列表)

注意:如果正则表达式有分组,直接获取到的是分组中匹配到的内容;如果有多个分组列表中的元素是元祖

8、finditer(正则表达式, 字符串)

在字符串中获取满足正则表达式的所有的子串(结果是迭代器)

9、re.I

匹配的时候忽略大小写,匹配的约束条件是放在flags参数中的。

print(re.fullmatch(r'[a-z]{2}', 'SA', re.I))
上一篇 下一篇

猜你喜欢

热点阅读