Bootstrap

Python14

正则表达式(RE)为高级文本模式匹配,以及搜索-替代等功能提供了基础,RE有字符和特殊符号组成,描述了这些字符和字符的某种重复方式,能按某种模式匹配一个有相似特征的字符串的集合,因此能按某种模式匹配一系列有相似特征的字符串

特殊符号和字符

符号和字符赋予了正则表达式强大的功能和灵活性,下表是常见的符合和字符

符号说明举例
literal匹配字符串的值foo
data1|data2匹配正则表达式data1或data2foo|bar
.匹配任何字符(换行符除外)b.b
^匹配字符串的开始^head
$匹配字符串的结尾tail$
*匹配前面出现的正则表达式零次或多次[A-Za-z0-9]*
+匹配前面出现的正则表达式一次或多次[a-z]+.com
匹配前面出现的正则表达式零次或一次goo?
{N}匹配前面出现的正则表达式N次[0-9]{3}
{M,N}匹配重复出现M次到N次的正则表达式[0-9]{5,9}
[…]匹配字符组里出现的任意一个字符[aeiou]
[..x-y..]匹配从字符x到y中的任意一个字符[0-9],[A-Za-z]
[^…]不匹配此字符集中出现的任何一个字符,包括某一范围的字符(如果在此字符集中出现)[^aeiou],[^A-Za-z0-9_]
(*|+|?|{})?用于上面出现的任何“非贪婪”版本重复匹配次数符号(*,+,?,{}).*?[a-z]
(…)匹配封闭括号中正则表达式,并保存为子组([0-9]{3})?,f(oo
\d匹配任何数字,和[0-9]一样(\D是\d的反义:任何非数符字)data\d+.txt
\w匹配任何数字字母字符,和[A-Za-z0-9_]相同(\W是\w的反义)[A-Za-z_]\w+
\s匹配任何空白符,和[\n\t\r\v\f]相同,(\S是\s的反义)of\sthe
\b匹配单词边界(\B是\b的反义)\bThe\b
\nn匹配已保存的子组price:\16
\c逐一匹配特殊字符c(即,取消它的特殊含义,按字面匹配)\.,\,\*
\A(\Z)匹配字符串的起始(结束)\ADear
re模块

常见的正则表达式函数与方法

函数/方法描述
compile(pattern)对正则表达式模式pattern进行编译,flags是可选标志符,并返回一个regex对象
match(pattern,string,flags=0)尝试用正则表达式模式pattern匹配字符串string,flags是可选标志符,如果匹配成功,则返回一个匹配对象,否则返回None
search(pattern,string,flags=0)在字符串string中查找正则表达式模式pattern的第一个出现,flags是可选标志符,如果匹配成功,返回一个匹配对象,否则返回None
findall(pattern,string[,flags])在字符串string中查找正则表达式模式pattern的所有(非重复)出现;返回一个匹配对象的列表
finditer(pattern,string[,flags])和findall()相同,但返回的不是列表而是迭代器,对于每个匹配,该迭代器返回一个匹配对象
split(pattern,string,max=0)根据正则表达式pattern中的分隔符把字符string分割为一个列表,返回成功匹配的列表,最多分割max次
sub(pattern,repl,string,max=0)把字符串string中的所有匹配正则表达式pattern的地方替换成字符串repl,如果max么米有给出,则对所有匹配的地方进行替换
group(num=0)返回全部匹配对象
groups返回一个包含全部匹配的子组的元组
;