当前位置:首页 > Python正则表达式
Python正则表达式
正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。
Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。 re 模块使 Python 语言拥有全部的正则表达式功能。
compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换。
re 模块也提供了与这些方法功能完全一致的函数,这些函数使用一个模式字符串做为它们的第一个参数。
本章节主要介绍Python中常用的正则表达式处理函数。
re.match函数 re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。 函数语法: re.match(pattern, string, flags=0) 函数参数说明: 参数 描述 pattern string flags 匹配的正则表达式 要匹配的字符串。 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。 匹配成功re.match方法返回一个匹配的对象,否则返回None。 我们可以使用group(num) 或 groups() 匹配对象函数来获取匹配表达式。 匹配对象方法 描述 group(num=0) 匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。 groups() 实例 1: #!/usr/bin/python 返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。 # -*- coding: UTF-8 -*- import re print(re.match('www', 'www.runoob.com').span()) # 在起始位置匹配 print(re.match('com', 'www.runoob.com')) # 不在起始位置匹配 以上实例运行输出结果为: (0, 3) None 实例 2: #!/usr/bin/python import re line = \ matchObj = re.match( r'(.*) are (.*?) .*', line, re.M|re.I) if matchObj: print \, matchObj.group() print \, matchObj.group(1) print \, matchObj.group(2) else: print \ 以上实例执行结果如下: matchObj.group() : Cats are smarter than dogs matchObj.group(1) : Cats matchObj.group(2) : smarter re.search方法 re.search 扫描整个字符串并返回第一个成功的匹配。 函数语法: re.search(pattern, string, flags=0) 函数参数说明: 参数 描述 pattern string flags 匹配的正则表达式 要匹配的字符串。 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。 匹配成功re.search方法返回一个匹配的对象,否则返回None。 我们可以使用group(num) 或 groups() 匹配对象函数来获取匹配表达式。 匹配对象方法 描述 group(num=0) 匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。 groups() 实例 1: #!/usr/bin/python 返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。 # -*- coding: UTF-8 -*- import re print(re.search('www', 'www.runoob.com').span()) # 在起始位置匹配 print(re.search('com', 'www.runoob.com').span()) # 不在起始位置匹配 以上实例运行输出结果为: (0, 3) (11, 14) 实例 2: #!/usr/bin/python import re line = \; searchObj = re.search( r'(.*) are (.*?) .*', line, re.M|re.I) if searchObj: print \, searchObj.group() print \, searchObj.group(1) print \, searchObj.group(2) else: print \ 以上实例执行结果如下: searchObj.group() : Cats are smarter than dogs searchObj.group(1) : Cats searchObj.group(2) : smarter re.match与re.search的区别 re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。 实例: #!/usr/bin/python import re line = \; matchObj = re.match( r'dogs', line, re.M|re.I) if matchObj: print \, matchObj.group() else: print \
共分享92篇相关文档