【Python基础】正则表达式
提前祝大家新年好,本文应该是春节前最后一篇文章啦~
正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配,Python主要通过re模块使用正则表达式.
本文不介绍正则表达式的语法本身,只介绍Python中使用正则表达式。
1 字符串搜索
1.1 re.search
使用re.search
函数,扫描整个字符串并返回第一个成功的匹配。
re.search(pattern, string, flags=0)
各个参数的含义如下:
pattern:输入的正则表达式
string: 要匹配的字符串。
flags: 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。
如果re.search方法匹配成功,则返回一个匹配的对象;否则返回None。我们以简单例子说明:
import re result = re.search("bitpy", "www.bitpy.com") print(result)
输出结果如下:
<re.Match object; span=(4, 9), match='bitpy'>
1.2 提取匹配结果
上一小节得到了匹配结果对象(即re.MatchObject
对象),可以根据实际需求提取对应的信息
获取匹配区间
import re result = re.search("bitpy", "www.bitpy.com") print(result.span())
输出结果如下:
(4, 9)
除此之外,还有start()
函数返回匹配开始的位置;end()
函数返回匹配结束的位置。
获取匹配内容
如果需要提取关键子串,可以通过在正则表达式中加入括号,然后对匹配结果通过group
函数提取。
import re result = re.search(r"(.*)\.(.*)\.(.*)", "www.bitpy.com") if result: print(result.groups()) print(result.group(0)) print(result.group(1)) print(result.group(2)) print(result.group(3))
注意第二行,引号前面加字母r
,表示此字符串是正则表达式。
输出结果如下:
('www', 'bitpy', 'com') www.bitpy.com www bitpy com
2 字符串匹配
re.match
尝试从字符串的起始位置匹配一个模式,如果匹配成功,返回re.MatchObject
对象;否则返回none
。
re.match(pattern, string, flags=0)
以简单实例说明:
import re result_1 = re.match(r"bitpy", "bitpy.com") result_2 = re.match(r"(.*).com", "bitpy.com") if result_1: print(result_1.span()) if result_2: print(result_2.groups())
注意,re.match
返回的也是re.MatchObject
对象,因此,也可以通过span
、group
等函数获取对应的信息。
输出结果如下:
(0, 5) ('bitpy',)
3 标志位flags参数
正则表达式可以包含一些可选标志修饰符来控制匹配的模式。修饰符被指定为一个可选的标志。多个标志可以通过按位 OR(|)
它们来指定。如 re.I | re.M
被设置成 I
和 M
标志: