定义
正则表达式是一个特殊的字符序列,能帮助你方便地检查一个字符串是否与某种模式匹配
使用正则表达式的原因
典型的搜索和替换操作要求提供与预期的搜索结果匹配的确切文本。虽然这种技术对于对静态文本执行简单搜索和替换任务可能已经足够了,但它缺乏灵活性,若采用这种方法搜索动态文本,即使不是不可能,但会变得很困难。
通过使用正则表达式,可以:
(1)测试字符串内的模式。
例,可以测试输入字符串,以查看字符串内是否出现电话号码模式或信用卡号码模式。这称为数据验证。
(2)替换文本。
可以使用正则表达式来识别文档中的特定文本,完全
删除该文本或者用其他文本替换它。
(3)基于模式匹配从字符串中提取子字符串。
可以查找文档内或输入域内特定的文本。
Python支持的正则表达式元字符和语法
re.match方法
尝试从字符串的起始位置匹配一个模式,匹配成功re.match方法返回一个匹配的对象,否则返回None。
re.match(pattern, string, flags=0)
其中,
pattern:匹配的正则表达式
string:要匹配的字符串
flags:标志位,用于控制正则表达式的匹配方式。多个标志可以通过按位 OR(|) 来指定,如 re.I | re.M 被设置成 I 和 M 标志。具体如下:
①re.I:使匹配对大小写不敏感
② re.L:做本地化识别匹配
③re.M:多行匹配,影响 ^ 和 $
④re.S:使 . 匹配包括换行在内的所有字符
⑤re.U:根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.
⑥re.X:该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解
import re
print(re.match('www', 'www.runoob.com'))
print(re.match('com', 'www.runoob.com'))
#答案:<re.Match object; span=(0, 3), match='www'>
None
import re
middle = re.match('www', 'www.runoob.com'))
print(middle.span()) #答案:(0, 3) tuple形式返回范围
print(middle.group()) #答案:www 以str形式返回对象中match的元素
print(middle.start()) #答案:0 返回开始位置
print(middle.end()) #答案:3 返回结束位置
re.search方法
扫描整个字符串并返回第一个成功的匹配
re.search(pattern, string, flags=0)
import re
print(re.search('www', 'www.runoob.com'))
#答案:<re.Match object; span=(0, 3), match='www'>
print(re.search('www', 'www.runoob.com').span())
#答案:(0, 3)
print(re.search('com', 'www.runoob.com').span())
#答案:(11, 14)
re.match与re.search的区别
re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。