欢迎访问宙启技术站
智能推送

Python正则表达式函数:match、search、findall等用法详解

发布时间:2023-06-08 01:01:49

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”。