正则表达式


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 示例