re 模块
模块内容
re 模块几乎包含了正则表达式的所有功能,我们先来看一下该模块的主要方法。
re.compile(pattern, flags=0)
用于编译正则表达式,生成一个正则表达式(Pattern)对象,供 match() 和 search() 这两个函数使用。参数说明如下:
- pattern : 一个字符串形式的正则表达式
- flags : 匹配模式,包括如下:
参数 说明 re.A 让 \w, \W, \b, \B, \d, \D, \s, \S 只匹配 ASCII re.I 忽略大小写 re.M 多行模式 re.L 由当前语言区域决定 \w, \W, \b, \B 和大小写敏感匹配 re.S . 匹配包括换行符在内的任意字符 re.U 在 Python3 中是冗余的,因为 Python3 中字符串已经默认为 Unicode re.X 忽略空格和 # 后面的注释
看一下示例:
import re re.compile(r'abc', re.I)
re.search(pattern, string, flags=0)
扫描整个字符串找到匹配样式的第一个位置,并返回一个相应的匹配对象;如果没有匹配,就返回一个 None。参数说明如下:
pattern:匹配的正则表达式
string:要匹配的字符串
flags:匹配模式
看一下示例:
import re print(re.search(r'abc', 'abcef')) print(re.search(r'abc', 'aBcef'))
re.match(pattern, string, flags=0)
如果 string 开始的 0 或者多个字符匹配到了正则表达式样式,就返回一个相应的匹配对象;如果没有匹配,就返回 None。看下示例:
import re print(re.match(r'abc', 'abcef'))
re.fullmatch(pattern, string, flags=0)
如果整个 string 匹配到正则表达式样式,就返回一个相应的匹配对象;否则就返回一个 None。看一下示例:
import re print(re.fullmatch(r'abc', 'abcef')) print(re.fullmatch(r'abc', 'abc'))
re.split(pattern, string, maxsplit=0, flags=0)
用 pattern 分开 string,如果在 pattern 中捕获到括号,那么所有的组里的文字也会包含在列表里,如果 maxsplit 非零,最多进行 maxsplit 次分隔,剩下的字符全部返回到列表的最后一个元素。看一下示例:
import re print(re.split(r'\W+', 'ityard, ityard, ityard.')) print(re.split(r'(\W+)', 'ityard, ityard, ityard.')) print(re.split(r'\W+', 'ityard, ityard, ityard.', 1)) print(re.split('[a-f]+', '1A2b3', flags=re.IGNORECASE))
re.findall(pattern, string, flags=0)
对 string 返回一个不重复的 pattern 的匹配列表,string 从左到右进行扫描,匹配按找到的顺序返回,如果样式里存在一到多个组,就返回一个组合列表,空匹配也会包含在结果里。看一下示例:
import re print(re.findall(r'ab', 'abefabdeab'))
re.finditer(pattern, string, flags=0)
pattern 在 string 里所有的非重复匹配,返回为一个迭代器 iterator 保存了匹配对象,string 从左到右扫描,匹配按顺序排列。看一下示例:
import re it = re.finditer(r'\d+', '12ab34cd56') for match in it: print(match)
re.sub(pattern, repl, string, count=0, flags=0)
返回通过使用 repl 替换在 string 最左边非重叠出现的 pattern 而获得的字符串,count 表示匹配后替换的最大次数,默认 0 表示替换所有的匹配。看一下示例:
import re str = 'ityard # 是我的名字' print(re.sub(r'#.*$', '', str))
re.subn(pattern, repl, string, count=0, flags=0)
行为与 re.sub() 相同,但返回的是一个元组。看一下示例:
import re str = 'ityard # 是我的名字' print(re.subn(r'#.*$', '', str))
re.escape(pattern)
转义 pattern 中的特殊字符。看一下示例:
import re print(re.escape('https://blog.csdn.net/ityard'))
re.purge()
清除正则表达式缓存。