zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Python中正则表达式的用法实例汇总

2023-06-13 09:15:43 时间

正则表达式是Python程序设计中非常实用的功能,本文就常用的正则表达式做一汇总,供大家参考之用。具体如下:

一、字符串替换

1.替换所有匹配的子串

用newstring替换subject中所有与正则表达式regex匹配的子串

result,number=re.subn(regex,newstring,subject)

2.替换所有匹配的子串(使用正则表达式对象)

reobj=re.compile(regex)
result,number=reobj.subn(newstring,subject)

二、字符串拆分

1.字符串拆分

result=re.split(regex,subject)

2.字符串拆分(使用正则表示式对象)

reobj=re.compile(regex)
result=reobj.split(subject)

三、匹配

下面列出Python正则表达式的几种匹配用法:

1.测试正则表达式是否匹配字符串的全部或部分

regex=ur"..."#正则表达式
ifre.search(regex,subject):
do_something()
else:
do_anotherthing()

2.测试正则表达式是否匹配整个字符串

regex=ur"...\Z"#正则表达式末尾以\Z结束
ifre.match(regex,subject):
do_something()
else:
do_anotherthing()

3.创建一个匹配对象,然后通过该对象获得匹配细节

regex=ur"..."#正则表达式
match=re.search(regex,subject)
ifmatch:
#matchstart:match.start()
#matchend(exclusive):match.end()
#matchedtext:match.group()
do_something()
else:
do_anotherthing()

4.获取正则表达式所匹配的子串

(Getthepartofastringmatchedbytheregex)

regex=ur"..."#正则表达式
match=re.search(regex,subject)
ifmatch:
result=match.group()
else:
result=""

5.获取捕获组所匹配的子串

(Getthepartofastringmatchedbyacapturinggroup)

regex=ur"..."#正则表达式
match=re.search(regex,subject)
ifmatch:
result=match.group(1)
else:
result=""

6.获取有名组所匹配的子串

(Getthepartofastringmatchedbyanamedgroup)

regex=ur"..."#正则表达式
match=re.search(regex,subject)
ifmatch:
result=match.group("groupname")
else:
result=""

7.将字符串中所有匹配的子串放入数组中

(Getanarrayofallregexmatchesinastring)

result=re.findall(regex,subject)

8.遍历所有匹配的子串

(Iterateoverallmatchesinastring)

formatchinre.finditer(r"<(.*?)\s*.*?/\1>",subject)
#matchstart:match.start()
#matchend(exclusive):match.end()
#matchedtext:match.group()

9.通过正则表达式字符串创建一个正则表达式对象

(Createanobjecttousethesameregexformanyoperations)

reobj=re.compile(regex)

10.用法1的正则表达式对象版本

(useregexobjectforif/elsebranchwhether(partof)astringcanbematched)

reobj=re.compile(regex)
ifreobj.search(subject):
do_something()
else:
do_anotherthing()

11.用法2的正则表达式对象版本

(useregexobjectforif/elsebranchwhetherastringcanbematchedentirely)

reobj=re.compile(r"\Z") #正则表达式末尾以\Z结束
ifreobj.match(subject):
do_something()
else:
do_anotherthing()

12.创建一个正则表达式对象,然后通过该对象获得匹配细节

(Createanobjectwithdetailsabouthowtheregexobjectmatches(partof)astring)

reobj=re.compile(regex)
match=reobj.search(subject)
ifmatch:
#matchstart:match.start()
#matchend(exclusive):match.end()
#matchedtext:match.group()
do_something()
else:
do_anotherthing()

13.用正则表达式对象获取匹配子串

(Useregexobjecttogetthepartofastringmatchedbytheregex)

reobj=re.compile(regex)
match=reobj.search(subject)
ifmatch:
result=match.group()
else:
result=""

14.用正则表达式对象获取捕获组所匹配的子串

(Useregexobjecttogetthepartofastringmatchedbyacapturinggroup)

reobj=re.compile(regex)
match=reobj.search(subject)
ifmatch:
result=match.group(1)
else:
result=""

15.用正则表达式对象获取有名组所匹配的子串

(Useregexobjecttogetthepartofastringmatchedbyanamedgroup)

reobj=re.compile(regex)
match=reobj.search(subject)
ifmatch:
result=match.group("groupname")
else:
result=""

16.用正则表达式对象获取所有匹配子串并放入数组

(Useregexobjecttogetanarrayofallregexmatchesinastring)

reobj=re.compile(regex)
result=reobj.findall(subject)

17.通过正则表达式对象遍历所有匹配子串

(Useregexobjecttoiterateoverallmatchesinastring)

reobj=re.compile(regex)
formatchinreobj.finditer(subject):
#matchstart:match.start()
#matchend(exclusive):match.end()
#matchedtext:match.group()

感兴趣的读者可以动手调试一下本文实例代码,相信会有新的收获。