Python中正则表达式的用法实例汇总
正则表达式是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()
感兴趣的读者可以动手调试一下本文实例代码,相信会有新的收获。