正则表达式
1 简介
正则表达式 是一些有字符和特殊符号组成的字符串,他描述了模式的重复或者表述多个字符,于是正则表达式能够按照魔种模式匹配一系列有相似特征的字符。
在Python开发语言中re模块来支持正则表达式。
2 常见的正则表达式符号
常见的正则表达式符号如下表所示:
| 表示方法 | 描述 | 示例 |
| literal | 匹配文本字符串literal | foo |
| re1|re2 | 匹配表达式re1或者re2 | foo|bar |
| . | 匹配任何字符(除\n之外) | b.b |
| ^ | 匹配字符串起始部分 | ^Dear |
| $ | 匹配字符串种植部分 | /bin/*sh$ |
| * | 匹配0次或者多次前面出现的正则表达式 | [A-Za-z0-9]* |
| + | 匹配1次或者多次前面出现的正则表达式 | [a-z]+\.com |
| ? | 匹配0次或者1次前面出现的正则表达式 | goo? |
| {N} | 匹配N次前面出现的正则表达式 | [0-9]{5-9} |
| {M,N} | 匹配M-N次前面出现的正则表达式 | [0-9]{5,9} |
| [...] | 匹配来自字符集的任意字符 | [aeiou] |
| [..x-y..] | 匹配x-y范围中的任意一字符 | [0-9],[A-Za-z] |
| [^...] | 不匹配此字符集中出现的任何一个字符,包括魔衣范围的字符 | [^aeiou] |
| (*|+|?|{})? | 匹配上面明矾出现/重复出现的非贪婪版本(*、+、?、{}) | .*?[a-z] |
| (...) | 匹配封闭的正则表达式,然后另存为子组 | ([0-9]{2})?,f(oo|u)bar |
| \d | 匹配任何十进制数字 | data\d+.txt |
| \w | 匹配任何字母数字字符 | [A-Za-z]\w+ |
| \s | 匹配任何空字符 | of\sthe |
| \b | 匹配任何单词边界 | \bThe\b |
3 Python的正则表达式模块
python使用re模块来支持正则表达式,re为标准的库模块,第三方模块regex提供了与标准库re模块兼容的 API 接口,同时,还提供了更多功能和更全面的 Unicode 支持。本篇文章主要介绍re标准库的使用,re中文文档
3.1 常见的正则表达式属性
| 函数方法 | 说明 |
| complie(pattern,flags=0) | 使用任何可选的标记来编译正则表达式,然后返回一个正则表达式对象 |
| match(pattern,string,flags=0) | 使用带有可选的标记的正则表达式的模式来匹配字符串,如果匹配成功,就返回匹配对象;失败则返回None |
| search(pattern,string,flags=0) | 使用可选标记搜索字符串中第一次出现的正则表达式模式。匹配成功则返回匹配对象,匹配失败返回None |
| findall(pattern,string[,flags]) | 查找字符串中的所有出现的正则表达式模式,并返回一个匹配列表 |
| finditer(pattern,string[,flags]) | 与findall()函数相同,但返回的不是一个列表,而是一个迭代器,对于每一次匹配,迭代器都返回一个匹配对象 |
| split(pattern,string,max=0) | 根据正则表达式模式分隔符,split函数将字符串分割为列表,憨厚返回成功匹配的列表,分隔最大操作max次 |
| sub(pattern,repl,sting,count=0) | 使用repl替换所有正则表达式模式在字符串中出现的位置,除非定义count,否则就将替换所有出现的位置 |
| purge() | 清楚隐式编译的正则表达式模式 |
| 常用的匹配方法 | |
| group(num=0) | 返回整个匹配对象,或者编号为num的特定子组 |
| groups(default=None) | 返回一个包含匹配子组的元组,匹配失败返回空 |
3.2 示例