python中的re模块提供对正则表达式的支持

什么是正则表达式?

正则表达式是可匹配的文本片段,最简单的正则表达式可以是普通的字符串,与它自己匹配。

例如:表达式'python'与字符串'python'匹配。

通配符

运用特殊字符串与多个字符串匹配。例如句点,'.ython'与字符串'python'和'jython'都匹配,还可以是'qython'、'+ython'、' ython',但不与'udython'、'ython'等字符串匹配,句点只能与一个字符匹配,不能与零或两个字符匹配。

句点与除换行符外的任何字符都匹配,也被称为通配符

对特殊字符进行转义

'python.org',能与‘python.org’匹配,但也与'pythonaorg'匹配,这是需要在句点前加斜杠进行转义,re模块中要求用\\双斜杠,'python\\.org',此时只与'python.org'匹配。也可以用原始字符串,r'python\.org',此时表示是在re模块中使用的转义。

字符集

当需要更精细的控制时,可以用方括号将一个子串括起来,创建字符集。例如:'[pj]ython'与'python'和'jython'都匹配,但与其他字符串不匹配。'[a-z]'与a~z的任何字母都匹配,'[a-zA-Z0-9]'与大小写字母和数字匹配。字符集只能匹配一个字符

^脱字符,可以制定排除字符集。'[^abc]'与除a,b,c外的任何其他字符都匹配。

二选一和子模式

特殊字符:管道字符(|),'python|perl',存在相同的部分可写成'p(ython|erl)',单个字符也可称为子模式。

可选模式和重复模式

在子模式后加?,可将其指定为可选,即可包含可不包含。

r'(http://)?(www\.)?python\.org'与哪些字符串匹配?

答案:

'http://www.python.org'
'http://python.org'
'www.python.org'
'python.org'

(some)*,some可重复0、1或多次

(some)+,some可重复1或多次

(some){m,n},some可重复m~n次

re模块中几个使用正则表达式的函数:

compile(pattern[,flags])    根据包含正则表达式的字符串创建模式对象

search(pattern,string[,flags])  在字符串中查找模式

match(pattern,string[,flags])  在字符串开头匹配模式

split(pattern,string[,flags])  根据模式来分割字符串

findall(pattern,string)  返回一个列表,其中包含字符串中所有与模式匹配的子串

sub(pat,repl,string[,count=0])  将字符串中与模式pat匹配的子串都替换为repl

escape(string)  对字符串中所有的正则表达式特殊字符都进行转义