Python 基础笔记——正则
import re
元字符:
符号 | 描述 |
---|---|
. | 通配符,匹配除换行符外的所有字符,一次只能匹配一个字符 |
^ | 匹配的字符必须在字符串开头 |
$ | 匹配的字符必须在字符串结尾 |
* | 匹配 * 前面的字符 0 或多次 |
+ | 匹配 + 前面的字符 1 或多次 |
? | 匹配?前面的字符 0 或 1 次 |
{} | 匹配 {m,n} 前面的字符 m-n 次 |
[] | 匹配 [] 中的某一个字符。在 [] 中,.(通配符) 将失去作用,^ 在 [] 里使用代表取反,反斜杠在 [] 中仍有特殊作用 |
\ | 反斜杠后面跟元字符去除元字符特殊功能,后面跟普通字符实现特殊功能 |
\d | 匹配任何 一个十进制数,相当于 [0-9] |
\D | 匹配任意一个非数字字符,相当于 [^0-9] |
\s | 匹配一个空白字符,等价于 [\t\n\r\f\v] |
\S | 匹配一个非空白字符,等价于 [^\t\n\r\f\v] |
\w | 匹配任意一个字母数字或下划线,等价于 [a-zA-Z0-9_] |
\W | 匹配除字母数字或下划线外的任意一个字符,等价于 [^a-zA-Z0-9_] |
\b | 匹配一个单词的边界,在需要匹配的单词两边放入 \b |
re 模块中一些重要函数
函数 | 描述 |
---|---|
compile(patern[, flags]) | 根据包含正则表达式的字符串穿件模式对象 |
search(pattern, string[, flags]) | 在字符串中寻找模式 |
match(pattern, string[, flags]) | 在字符串的开始处匹配模式 |
split(pattern, string[, maxsplit=0]) | 根据模式的匹配项来分割字符串 |
findall(pattern, string) | 列出字符串中模式的所有匹配项 |
sub(pattern, replace, string[, count=0]) | 将字符串中所有 pattern 的匹配项用 replace 替换 |
secape(string) | 将字符串中所有特殊正则表达式字符转义 |
1、re.findall (pattern,string):查找匹配项,返回包含所有匹配项的列表,没有匹配项返回空列表。注:如果匹配项里有组,则会优先取出组里的匹配项,如果想取出完整匹配项则在组的开始加上?:(问号和冒号)
2、re.match (pattern,string [,flags]):从字符串开头进行匹配,成功返回 Match 对象,失败返回 None
3、re.search (pattern,string [,flags]):在 string 中匹配 pattern,成功返回 Match 对象,失败返回 None, 只返回第一个
注:flags 默认为 0,其它可选项:
re.I(大写 i) 使匹配对大小写不敏感
re.M 多行匹配,影响 ^ 和 $
re.S 使 .(通配符)匹配包括换行符在内的所有字符
4、re.sub (pat,repl,string [count=0]):将字符串中所有 pat 的匹配项用 repl 替换,count 参数代表替换次数
5、re.subn (pat,repl,string [count=0]):和 sub () 功能一样,不同的是此函数返回被替换次数
6、re.split (pattern,string [, maxsplit=0]):根据匹配项分割字符串,返回列表
7、re 匹配对象的方法:
>>> r = re.match(r'to\b\s(be)\b', s)
>>> r.group()
'to be'
>>> r.groups()
('be',)
>>> r = re.match(r'to\b\s(?P<key>be)\b', s)
>>> r.groupdict()
{'key': 'be'}
group ([group1,...]) 返回匹配到的字符串
groups () 返回匹配到的分组结果,以元组形式返回
groupdict () 以匹配到的分组结果作为值,以指定 key 作为键,以字典形式返回
start ([group]) 返回给定组匹配项的开始索引(默认为 0)
end ([group]) 返回给定组匹配项的结束索引加 1
span ([group]) 以元组形式返回一个组的 start 和 end
8、re.finditer ():匹配成功返回迭代器对象,可在 for 循环中使用 group () 等 re 匹配对象方法
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: