常用语法
操作符 | 说明 | 实例 |
---|
. | 表示单个字符 | |
[ ] | 字符集,对单个字符的取值范围 | [abc]表示a、b、c,[a-z]表示a到z的单个字符 |
[^ ] | 非字符集,对单个字符给出排除范围 | [^abc]表示非a或非b或非c的单个字符 |
* | 前一个字符0次或者无限次扩展 | [abc*]表示ab,abc,abcc,abccc等 |
+ | 前一个字符1次或者无限次扩展 | [abc+]表示abc,abcc,abccc等 |
? | 前一个字符0次或者1次出现 | [abc?]表示ab或者abc |
| | 左右表达式任意一个 | abc|def表示abc或者def |
{m} | 表示前一个字符扩展m次 | ab{2}c表示abbc |
{m,n} | 表示前一个字符扩展m至n次(含n) | ab{1,2}c表示abc或abbc |
^ | 匹配字符串开头 | ^abc表示abc且在一个字符串的开头 |
$ | 匹配字符串结尾 | abc$表示abc且在一个字符串的结尾 |
( ) | 分组标记,内部只能使用 | 分割符 | (abc)表示abc,(abc |
\d | 数字等价于0-9 | |
\w | 单词字符,等价于[a-zA-Z0-9_] | |
元字符
- ‘\d’ 代表数字
- ‘\D’ 代表非数字字符
- ‘\w’匹配数字和字母和下划线
- ‘\W’ 匹配非单词字符(\r,\t,’ ')
- ‘\s’ 匹配空白字符(空格回车制表)
- . 匹配除换行符外所有字符
re库函数
函数 | 说明 |
---|
re.search() | 在一个字符串中搜索匹配正则表达式中的第一个位置,返回match对象 |
re.match() | 从一个字符串的开始位置匹配正则表达式,返回match对象 |
re.findall() | 搜多字符串,以列表类型返回全部匹配的子串 |
re.split() | 讲一个字符串按照正则表达式匹配结果进行分割,返回列表类型 |
re.finditer() | 搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素是match对象 |
re.sub() | 在一个字符串中替换所有匹配正则表达式的子串,返回替换后的字符串 |
match对象
属性
属性 | 说明 |
---|
.string | 待匹配的文本 |
.re | 匹配时使用的pattern对象 |
.pos | 正则表达式搜索文本的开始位置 |
.endpos | 正则表达式搜索文本的结束位置 |
方法
方法 | 说明 |
---|
.group(0) | 获得匹配后的字符串 |
.start() | 匹配字符串在原始字符串的开始位置 |
.end() | 匹配字符串在复试字符串的结束位置 |
.span() | 返回元组(.start(),.end()) |
使用方法
面向对象用法:编译后的多次操作
pat=re.compile(r'[1-9]\d{5}')
rst=pat.findall('BIT 100081')
注
字符串前面加r表示raw string类型,可以防止转义
如果路径中出现’\t’的话 不加r的话\t就会被转义 而加了’r’之后’\t’就能保留原有的样子
函数式用法:一次性操作
rst=re.findall(r'[1-9]\d{5}','BIT 100081')
flag 标记
re.search(pattern,string,flags=0)
flags: 正则表达式使用的控制标记
常用标记 | 说明 |
---|
re.I re.IGNORECASE | 忽略正则表达式的大小写,[A-Z]能够匹配小写字符 |
re.M re.MULTILINE | 正则表达式中的^操作符能够将给定字符串的每行当做匹配开始 |
re.S re.DOTALL | 正则表达式中的.操作符能够匹配所有字符,默认匹配除换行符外的所有字符 |