一、简介:
正则表达式(regex)本身是一种小型的、高度专业化的编程语言,在中编程C/C++、JAVA等编程中也经常用,而在python编程中,通过标准库中的re模块来支持正则表达式。re模块支持强大而通用的Perl风格(Perl 5 风格)的正则表达式,该模块允许多个线程共享同一个已编译的正则表达式对象,也支持命名子组。
已编译的正则表达式对象指指正则表达式引擎编译表达式字符串得到的对象,包含应如何进行匹配的信息,使用re模块的compile(pattern, flags=0)函数。
二、常用的匹配对象方法:
方法 |
描述 |
group(num=0) |
返回整改匹配对象,或编号为num的特定子组。 从正则表 达式的左边开始看,看到的第一个左括号“()”表示表示第一个分组,第二个表示第二个分组,依次类推。需要注意的是,有一个隐含的全局分组(就是索引号为0的分组),就是整个正则表达式匹配的结果。 |
groups(default=None) |
返回一个包含所有匹配子组的元组(如果没有成功匹配,则返回一个空元组)。 |
groupdict(default=None) | 返回一个包含所有匹配的命名子组的字典,所有的子组名称作为字典的建(如果没有匹配成功,则返回一个空字典)。 |
start |
给定组匹配项的开始索引的位置。 |
end |
给定组匹配项的结束索引的位置。 |
span |
给定组匹配项的开始和结束索引的位置。 |
>>> s1 = 'www.baidu.com'
>>> pattern = r'www\.(.*)\.(.*)'
>>> pat = re.compile(pattern)
>>> m1 = pat.match(s1)
>>> m1
<_sre.SRE_Match object; span=(0, 13), match='www.baidu.com'>
>>> m1.group(1)
'baidu'
>>> m1.group(2)
'com'
>>> m1.start(1) # 第一组开始的索引
4
>>> m1.end(2) # 第二组结束的索引
13
>>> m1.span(1) # 第一组开始、结束的索引
(4, 9)
>>>
三、re模块的函数:
函数 |
描述 |
compile(pattern, flags=0) |
使用任何可选的标记来编译正则表达式的模式,然后返回一个正则表达式对象。 |
search(pattern, string, flags=0) |
使用可选标记搜索字符串中第一次出现的模式来匹配字符串。如果匹配成功,就返回匹配对象;如果失败,就返回None。 |
match(pattern,string) |
尝试使用带有可选的标记的正则表达式的模式来匹配字符串。如果匹配成功,就返回匹配对象;如果失败,就返回None。 |
findall(pattern, string [,flags]) |
查找字符串中所有(非重复)出现的正则表达式模式,并返回一个匹配列表。 |
finditer(pattern, string [,flags]) | 与findall()相同,但返回的不是一个列表,而是一个迭代器。对于每一次匹配,迭代器都返回一个匹配对象。 |
split(pattern, string, max=0, flags=0) |
根据正则表达式的模式分隔符,split函数将字符串分割为列表,然后返回成功匹配的列表,分隔最多操作max次(默认分割所有匹配成功的位置),flags为匹配模式。 |
sub(pat,repl,string,count=0,flags=0) |
使用repl替换所有正则表达式的模式在字符串中出现的位置,除非定义count,否则就将替换所有出现的位置。 |
subn(pat,repl,string,count=0,flags=0) | subn与sub同,区别只是多返回了一个替换的次数,并和替换后的字符串组成一个数组一同返回。 |
escape(string) |
对字符串中所有可能被解释为正则运算符的字符进行转义。 |
1、compile(pattern, flags=0)编译正则表达式。使用任何可选的标记来编译正则表达式的模式,然后返回一个正则表达式对象。实际应用中,可以不使用compile()函数进行编译。
>>> import re
>>>
>>> s = 'My 我的 first 第1个 python PYTHON regex123.