正则表达式(regular expression,简称regex)是文本处理方面功能最强大的工具之一。正则表达式语言用来构造正则表达式(最终构造出来的字符串就称为正则表达式),正则表达式用来完成搜索和替换操作
正则表达式语言是内置于其他语言或软件产品里的“迷你”语言,Python自1.5版本起增加了re
模块,它提供Perl风格的正则表达式模式
正则表达式经常被简称为模式(pattern),它们其实是一些由字符构成的字符串,这些字符可以是普通字符(纯文本)或元字符(metacharacter,表示这个字符有特殊含义,而不是字符本身含义)
re模块常用函数
1. re.match
re.match尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none
import re str1 = 'My name is Jim.' print(re.match('Jim', str1)) # 》》None print(re.match('My', str1)) # 》》<re.Match object; span=(0, 2), match='My'>
匹配成功会返回一个re.Match对象,否则返回None
然后可以使用group()函数来获取匹配表达式
import re str1 = 'My name is Jim.' print(re.match('My', str1).group()) # 》》My
2. re.search
re.search扫描整个字符串并返回第一个成功的匹配
import re str1 = 'My name is Jim.' print(re.match('Jim', str1)) # 》》None print(re.search('Jim', str1)) # 》》<re.Match object; span=(11, 14), match='Jim'>
re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配
可以通过span()函数得到匹配对象的位置
import re str1 = 'My name is Jim.' print(re.search('My', str1).span()) # 》》(0, 2) print(re.search('Jim', str1).span()) # 》》(11, 14)
3. re.sub
re.sub用于替换字符串中的匹配项
import re str1 = 'My name is Jim.' print(re.sub('Jim', 'Kim', str1)) # 》》My name is Kim.
4. re.compile
compile函数用于编译正则表达式,生成一个正则表达式(Pattern)对象
import re str1 = 'My name is Jim.' pattern = re.compile('Jim') print(type(pattern)) # 》》<class 're.Pattern'> print(pattern.search(str1)) # 》》<re.Match object; span=(11, 14), match='Jim'>
5. findall
在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表
注意:match和search是匹配一次,findall匹配所有
import re str1 = 'My name is Jim. Her name is Kim.' print(re.findall('name', str1)) # 》》['name', 'name']
(部分内容摘自Ben Forta的《正则表达式必知必会》)