017 正则表达式

文章目录

    • 元字符使用
      • 匹配1个
      • 匹配字符重复
      • 匹配字符串开始位置
      • 匹配字符串的结束位置
      • 匹配(非)单词的边界位置
      • 或关系
    • 特殊字符匹配
    • 贪婪模式和非贪婪模式
    • 正则表达式分组
    • 函数使用
    • 返回match对象
    • 正则表达式匹配原则

定义
文本的高级匹配模式,本质是由一系列字符和特殊符号构成的字串,这个字串即正则表达式
原理
通过普通字符和有特定含义的字符,来组成字符串,用以描述一定的字符串规则

类别 元字符
匹配字符 . […] [^…] \d \D \w \W \s \S
匹配重复 * + ? {n} {m,n}
匹配位置 ^ $ \b \B
其他 | () \

元字符使用

匹配1个

普通字符
匹配规则: 每个普通字符匹配其对应的字符

元字符: .
匹配规则: 匹配除换行外的任意一个字符

匹配字符集
元字符: [字符集]
匹配规则: 匹配字符集中的任意一个字符
字符集内空格、区间、普通字符都可

匹配字符集反集
元字符:[^字符集]
匹配规则:匹配除了字符集以外的任意一个字符

匹配字符重复

元字符: *
匹配规则: 匹配前面的字符出现0次或多次

元字符: +
匹配规则: 匹配前面的字符出现1次或多次

元字符: ?
匹配规则: 匹配前面的字符出现0次或1次

元字符: {n}
匹配规则: 匹配前面的字符出现n次

元字符: {m,n}
匹配规则: 匹配前面的字符出现m-n次

匹配任意(非)数字字符

元字符: \d \D
匹配规则: \d匹配任意数字字符,\D匹配任意非数字字符

匹配任意(非)普通字符

元字符: \w \W
匹配规则: \w匹配普通字符,\W匹配非普通字符
说明: 普通字符指数字,字母,下划线,utf-8字符

匹配任意(非)空字符

元字符: \s \S
匹配规则: \s匹配空字符, \S匹配非空字符
说明: 空字符指空格\r \n \t \v \f字符

匹配字符串开始位置

元字符: ^
匹配规则: 匹配目标字符串的开头位置

匹配字符串的结束位置

元字符: $
匹配规则:匹配目标字符串的结尾位置

匹配(非)单词的边界位置

元字符: \b \B
匹配规则: \b表示单词边界,\B表示非单词边界
说明: 单词边界指数字字母(汉字)下划线与其他字符的交界位置

或关系

元字符:|
匹配规则:匹配|两侧任意的正则表达式即可

特殊字符匹配

如果匹配的目标字符串中包含正则表达式特殊字符,
则在表达式中元字符就想表示其本身含义时就需要进行\处理
特殊字符: . * + ? ^ $ [] () {} | \

贪婪模式和非贪婪模式

贪婪模式:默认情况下,匹配重复的元字符总是尽可能多的向后匹配内容。比如:* + ? {m,n}
非贪婪模式:让匹配重复的元字符尽可能少的向后匹配内容

正则表达式分组

在正则表达式中,以()建立正则表达式的内部分组,子组是正则表达式的一部分,可以作为内部整体操作对象。
作用:可以被作为整体操作,改变元字符的操作对象

import re
result = re.search('(ab)+',"ababab")
print(result.group())
print(result.span())

捕获组

捕获组本质也是一个子组,只不过拥有一个名称用以表达该子组的意义,这种有名称的子组即为捕获组
格式:(?Ppattern)

注意

子组序列号一般从外到内,从左到右计数

函数使用

re.findall(pattern,string)
功能: 根据正则表达式匹配目标字符串内容
参数: pattern 正则表达式
string 目标字符串
返回值: 匹配到的内容列表,如果正则表达式有子组则只能获取到子组对应的内容

re.split(pattern,string,max)
功能: 使用正则表达式匹配内容,切割目标字符串
参数: pattern 正则表达式
string 目标字符串
max 最多切割几部分
返回值: 切割后的内容列表

re.sub(pattern,replace,string,count)
功能: 使用一个字符串替换正则表达式匹配到的内容
参数: pattern 正则表达式
replace 替换的字符串
string 目标字符串
count 最多替换几处,默认替换全部
返回值:替换后的字符串

返回match对象

re.finditer(pattern,string)
功能: 根据正则表达式匹配目标字符串内容
参数: pattern 正则表达式
string 目标字符串
返回值: 匹配结果的迭代器

re.search(pattern,string)
功能: 匹配目标字符串第一个符合的内容
参数: pattern 正则
string 目标字符串
返回值: 匹配内容match object

re.match(pattern,string)
功能:匹配某个目标字符串开始位置
参数:pattern 正则
string 目标字符串
返回值:匹配内容match object

正则表达式匹配原则

1正确性,能够正确的匹配出目标字符串
2排他性,除了目标字符串外尽可能少的匹配其他内容
3全面性,尽可能考虑到目标字符串的所有情况,不遗漏

你可能感兴趣的:(python,正则表达式,python,开发语言)