Python中的正则表达式函数,包括字符串匹配、提取、替换等操作
发布时间:2023-06-11 10:44:26
正则表达式是一种强大且灵活的文本处理工具,Python中内置了re(正则表达式)模块,可以用来进行字符串匹配、提取、替换等操作。
1. 字符串匹配
re模块中提供了多个函数用于进行字符串匹配,其中常用的函数包括match()和search()函数。
a. match()函数:从字符串的开头开始匹配正则表达式,只有当正则表达式完全匹配时才返回匹配结果。示例如下:
import re
str = "Python is the best programming language"
matchObj = re.match( r'(.*) is (.*?) .*', str, re.M|re.I)
if matchObj:
print("matchobj.group() : ", matchObj.group())
print("matchobj.group(1) : ", matchObj.group(1))
print("matchobj.group(2) : ", matchObj.group(2))
else:
print("No match!!")
运行结果为:
matchobj.group() : Python is the best programming language matchobj.group(1) : Python matchobj.group(2) : the
b. search()函数:在字符串中搜索正则表达式,一旦匹配成功就立即停止搜索。示例如下:
import re
str = "Python is the best programming language"
searchObj = re.search( r'(.*) is (.*?) .*', str, re.M|re.I)
if searchObj:
print("searchobj.group() : ", searchObj.group())
print("searchobj.group(1) : ", searchObj.group(1))
print("searchobj.group(2) : ", searchObj.group(2))
else:
print("Nothing found!!")
运行结果与match函数相同。
2. 字符串提取
在正则表达式中使用括号( )可以将需要提取的部分括起来,在匹配成功时,这些部分可以通过group()函数来获取。示例如下:
import re
str = "Python is the best programming language"
searchObj = re.search( r'(.*) is (.*?) .*', str, re.M|re.I)
if searchObj:
print("searchobj.group() : ", searchObj.group())
print("searchobj.group(1) : ", searchObj.group(1))
print("searchobj.group(2) : ", searchObj.group(2))
else:
print("Nothing found!!")
运行结果与上面的示例相同。
3. 字符串替换
使用re.sub()函数可以进行正则表达式的替换。示例如下:
import re
str = "Python is the best programming language. Python is easy to learn."
newStr = re.sub('Python', 'Java', str)
print("new str: ", newStr)
运行结果为:
new str: Java is the best programming language. Java is easy to learn.
总体来说,Python中的正则表达式函数提供了很多灵活的文本处理工具,可以满足大多数情况下的需求。同时,需要注意正则表达式的写法,不同的符号、符号组合都有不同的含义和用处。同时,正则表达式的效率较低,如果存在大量的文本处理需求,建议使用其他更加高效的方法。
