Python中使用正则表达式的函数-如何进行匹配和替换
在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提供了很多正则表达式相关的函数可以方便地进行文本操作。要熟练掌握正则表达式需多加练习。
