详解 Python 正则表达式
正则表达式 是对字符串(a - z)& 特殊字符(称为“元字符”)操作的一种逻辑公式。
就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对 文本 or 字符串 的 一种过滤逻辑。
正则表达式,又称规则表达式(Regular Expression ,简称 re )。正则表达式主要用于
- 检查一个字符串是否含有某个子串;
- 也可以从字符串中提取匹配的子串;
- 或者对字符串中匹配的子串执行替换操作;
# Re库的主要功能:
函数 | 功能 |
---|---|
re .compile() | 根据一个模式字符串和可选的标志参数,生成一个正则表达式对象 |
re.search() | 在一个字符串中搜索匹配正则表达式的第一个位置,返回match对象 |
re.match() | 在一个字符串的开始位置匹配正则表达式,返回match对象 |
re.findall() | 搜索字符串,以列表的形式返回全部能匹配的子串 |
re.split() | 将一个字符串按照正则表达式匹配的结果进行分割,返回列表类型 |
re.finditer() | 搜索字符串,返回一个匹配的迭代类型,每个迭代元素是match对象 |
re.sub() | 在一个字符串中替换所有匹配正则表达式的子串,返回替换后的字符串 |
- group() 返回被 re 匹配的 子串内容
- span() 返回一个元组包含 子串 ( start , end ) 的位置
- start() 返回匹配开始的位置(子串第一个字符的索引)
- end() 返回匹配结束的位置(子串最后一个字符的索引+1 )
1、compile()
compile() 根据一个模式字符串和可选的标志参数,生成一个正则表达式对象( Pattern ),供 match() 替换 和 search() 匹配 这两个函数使用。
# 函数语法:
re.compile( pattern [, flags] )
函数参数说明:
- pattern:匹配的正则表达式;
- flags:标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等;
2、re.match()
re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。
# 函数语法:
re.match(pattern, string, flags=0)
函数参数说明:
- pattern:匹配的正则表达式;
- string:要匹配的字符串;
- flags:标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等;
- return:匹配成功返回一个元组,包含所有匹配字符串的序号,序号从 1 开始,否则返回None
span(n)方法:用于获取第 n+1 个组的匹配位置;
group(n)方法:用于获取第 n+1 个组所匹配的子串内容;
3、re.search()
re.search 扫描整个字符串,并返回 第一个 匹配 pattern 的匹配对象。
# 函数语法:
re.search(pattern, string, flags=0)
函数参数说明:
- pattern:匹配的正则表达式
- string:要匹配的字符串。
- flags:标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等;
- return:匹配成功返回一个元组(第一处匹配 Pattern的匹配对象)包含所有匹配字符串的序号,序号从 1 开始,否则返回None。
span(n)方法:用于获取第 n+1 个组的匹配位置;
group(n)方法:用于获取第 n+1 个组所匹配的子串内容;
re.match与re.search的区别
re.match 必须从字符串开始处就匹配,如果字符串开始不符合正则表达式,则匹配失败,函数返回 None,
而 re.search 匹配整个字符串,直到找到一个匹配。
4、re.sub()
re.sub 替换字符串中的匹配项
# 函数语法:
re.sub(pattern, repl, string, count=0, flags=0)
函数参数说明:
- pattern : 正则中的模式字符串。
- repl : 替换的字符串,也可为一个函数。
- string : 要被查找替换的原始字符串。
- count : 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配。
- flags : 编译时用的匹配模式,数字形式。
前三个为必选参数,后两个为可选参数。
5、findall()
在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。
注意: match 和 search 是匹配一次 findall 匹配所有。
# 函数语法:
re.findall(pattern, string, flags=0)
or
pattern.findall(string [, pos[, endpos]])
函数参数说明:
- pattern 匹配模式。
- string 待匹配的字符串。
- pos 可选参数,指定字符串的起始位置,默认为 0。
- endpos 可选参数,指定字符串的结束位置,默认为字符串的长度。
6、re.finditer()
和 findall 类似,在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回。
# 函数语法:
re.finditer(pattern, string, flags=0)
函数参数说明:
- pattern 匹配的正则表达式
- string 要匹配的字符串。
- flags 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。
7、re.split()
split 方法按照能够匹配的子串将字符串分割后返回列表,它的使用形式如下:
# 函数语法:
re.split(pattern, string[, maxsplit=0, flags=0])
函数参数说明:
- pattern 匹配的正则表达式
- string 要匹配的字符串。
- maxsplit 分隔次数,maxsplit=1 分隔一次,默认为 0,不限制次数。
- flags 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。
本文地址:https://blog.csdn.net/ViatorSun/article/details/108075213
推荐阅读