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

Python中使用正则表达式的函数-如何进行匹配和替换

发布时间:2023-06-18 15:28:46

在Python中,正则表达式是一种强大的模式匹配工具,它可以帮助我们在文本中查找特定的模式,并对其进行操作。Python内置了re模块,可以用它来操作正则表达式。

本文将介绍Python中使用正则表达式的函数,重点介绍如何进行匹配和替换。

一、re.match()函数

re.match()函数用于尝试从字符串的起始位置匹配一个模式,如果匹配成功,则返回一个匹配对象,否则返回None。语法如下:

re.match(pattern, string, flags=0)

其中,pattern表示要匹配的正则表达式,string表示要匹配的字符串,flags参数可选,表示匹配模式,比如是否区分大小写等,常用的Flags如下:

re.I  忽略大小写

re.M  多行匹配

re.S  匹配包括换行符在内的所有字符

re.A  使"."匹配包括换行符在内的所有字符,与re.S相反

re.X  忽略正则表达式中的空白和注释

示例代码:

import re

s = "Hello world"

matchObj = re.match(r'(.*) world', s, re.M|re.I)

if matchObj:

    print("matchObj.group() : ", matchObj.group())

else:

    print("No match!!")

输出结果:

matchObj.group() :  Hello

解释:re.match()尝试从字符串的起始位置匹配r'(.*) world'这个正则表达式,‘.*’表示匹配任意字符0个或多个,所以最后匹配的结果是‘Hello’。

二、re.search()函数

re.search()函数用于在字符串中搜索匹配正则表达式的第一个位置,如果匹配成功,则返回一个匹配对象,否则返回None。语法如下:

re.search(pattern, string, flags=0)

其中,pattern表示要匹配的正则表达式,string表示要匹配的字符串,flags参数可选,表示匹配模式,常用的Flags同上。

示例代码:

import re

s = "Hello world"

searchObj = re.search(r'(.*) world', s, re.M|re.I)

if searchObj:

    print("searchObj.group() : ", searchObj.group())

else:

    print("No match!!")

输出结果:

searchObj.group() :  Hello world

解释:re.search()在字符串s中查找r'(.*) world'这个正则表达式并进行匹配,最后匹配结果是‘Hello world’。

三、re.findall()函数

re.findall()函数用于在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的则返回空列表。语法如下:

re.findall(pattern, string, flags=0)

其中,pattern表示要匹配的正则表达式,string表示要匹配的字符串,flags参数可选,表示匹配模式,常用的Flags同上。

示例代码:

import re

s = "Hello World, how are you?"

findList = re.findall(r'\b\w{4}\b', s)

print(findList)

输出结果:

['Hello', 'World']

解释:re.findall()在字符串s中查找所有的4个字母的单词并进行匹配,最后匹配结果是'Hello'和'World'。

四、re.sub()函数

re.sub()函数用于替换字符串中的匹配项,语法如下:

re.sub(pattern, repl, string, count=0, flags=0)

其中,pattern表示要匹配的正则表达式,repl表示用来替换的字符串,string表示要匹配的字符串,count可选参数用于指定替换的最大次数,flags可选参数表示匹配模式,常用的Flags同上。

示例代码:

import re

s = "Hello World, how are you?"

newStr = re.sub(r'\b\w{4}\b', "Python", s)

print(newStr)

输出结果:

Python Python, how are you?

解释:re.sub()函数在字符串s中查找所有的四个字母的单词并将它们替换成'Python',最后替换结果是'Python Python, how are you?'。

五、re.split()函数

re.split()函数根据正则表达式分隔符,将字符串分割成一个列表,语法如下:

re.split(pattern, string, maxsplit=0, flags=0)

其中,pattern表示要匹配的正则表达式,string表示要匹配的字符串,maxsplit可选参数用于指定分割的最大次数,flags可选参数表示匹配模式,常用的Flags同上。

示例代码:

import re

s = "Hello World, how are you?"

splitList = re.split(r'\W+', s)

print(splitList)

输出结果:

['Hello', 'World', 'how', 'are', 'you', '']

解释:re.split()函数根据匹配正则表达式'\W+'将字符串s分割成一个列表,最后分割结果是'['Hello', 'World', 'how', 'are', 'you', '']'。

综上,Python提供了很多正则表达式相关的函数可以方便地进行文本操作。要熟练掌握正则表达式需多加练习。