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

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中的正则表达式函数提供了很多灵活的文本处理工具,可以满足大多数情况下的需求。同时,需要注意正则表达式的写法,不同的符号、符号组合都有不同的含义和用处。同时,正则表达式的效率较低,如果存在大量的文本处理需求,建议使用其他更加高效的方法。