Python正则表达式函数:match、search、findall等用法详解
Python中的正则表达式(Regular Expression)是一种高效、灵活且功能强大的文本匹配工具。通过使用正则表达式,我们可以更方便地处理文本。
在Python中,我们可以使用re模块来操作正则表达式。re模块提供了一些函数,包括match、search、findall等,用来匹配字符串。
1. match函数
match函数是re模块中最常用的函数之一。它用来在字符串的开头进行匹配,只有匹配成功了才会返回匹配对象。
match()函数的语法格式为:
re.match(pattern, string, flags=0)
其中,pattern表示正则表达式,string表示要匹配的字符串,flags是匹配模式,可用来控制正则表达式的匹配方式。flags的取值范围包括:
re.I :忽略大小写(不区分大小写)。
re.M :多行模式,改变'^'和'$'的用法。
re.S :使'.'匹配包括换行在内的所有字符。
re.U :使匹配变为Unicode模式,如'w'匹配中文。
re.X :给正则模式添加注释。
例如,我们想要匹配以字母“a”开头的字符串,代码如下:
import re
s = 'a beautiful girl'
pattern = '^a'
result = re.match(pattern, s)
print(result)
在上面的代码中,我们使用“^a”匹配以字母“a”开头的字符串。由于“a beautiful girl”开头并不是“a”,因此match函数返回None。
2. search函数
search函数与match函数类似,但它会在整个字符串中查找匹配。如果找到了匹配,它就会返回匹配对象,否则返回None。
search()函数的语法格式为:
re.search(pattern, string, flags=0)
例如,我们需要查找字符串中是否包含字母“b”,代码如下:
import re
s = 'a beautiful girl'
pattern = 'b'
result = re.search(pattern, s)
print(result)
在上面的代码中,我们使用“b”查找字符串中是否包含字母“b”。由于“a beautiful girl”中包含了字母“b”,因此search函数返回匹配对象。
3. findall函数
findall函数用来查找字符串中的所有符合正则表达式的子串,并以列表的形式返回。如果没有找到匹配,它就会返回空列表。
findall()函数的语法格式为:
re.findall(pattern, string, flags=0)
例如,我们需要查找字符串中所有的数字,代码如下:
import re
s = '12 34 56 78'
pattern = '\d+'
result = re.findall(pattern, s)
print(result)
在上面的代码中,我们使用“\d+”查找字符串中的所有数字,并返回一个列表。
4. split函数
split函数用来按照正则表达式指定的模式分隔字符串,并返回分隔后的结果。如果没有匹配的模式,它就会返回原字符串。
split()函数的语法格式为:
re.split(pattern, string, maxsplit=0, flags=0)
例如,我们需要按照空格分隔字符串,代码如下:
import re
s = 'a beautiful girl'
pattern = '\s+' # 表示匹配一个或多个空格
result = re.split(pattern, s)
print(result)
在上面的代码中,我们使用“\s+”按照空格分隔字符串,并返回一个列表。
5. sub函数
sub函数用来按照正则表达式指定的模式替换字符串,并返回替换后的结果。
sub()函数的语法格式为:
re.sub(pattern, repl, string, count=0, flags=0)
其中,pattern表示匹配模式,repl表示替换的字符串,string表示要操作的字符串,count表示替换的次数,flags表示匹配模式。
例如,我们需要将字符串中的空格替换为“@”符号,代码如下:
import re
s = 'a beautiful girl'
pattern = '\s+'
repl = '@'
result = re.sub(pattern, repl, s)
print(result)
在上面的代码中,我们使用“\s+”匹配空格,并使用“@”替换空格。最终结果为“a@beautiful@girl”。
