201768-python正则表达式的使用

xiaoxiao2021-02-28  134

参考文章https://mp.weixin.qq.com/s?timestamp=1496889018&src=3&ver=1&signature=a6AusC2HYPkwlVHDlfVK2NqAOuHGoLS6540WVCePMdB5e9zRehxx*ieX3iJYr-bietGtNvqBRHqB3FVMPTisWTW8cRYzHlI8-LnSL18q1ciblU3q3bfh-Ix4NNCdFM4LsnVD*Y48bIKEbaBRSdJ3VWZhOfPqJEjk1zOdxBpOe1g=

#match()函数的使用 #\w匹配字母数字及下划线 # \s匹配任意空白字符,等价于 [\t\n\r\f]. # \d匹配任意数字,等价于 [0-9] # [...]用来表示一组字符,单独列出:[amk] 匹配 'a','m'或'k' # [^...]不在[]中的字符:[^abc] 匹配除了a,b,c之外的字符。 #^匹配字符串的开头 #{n}精确匹配n个前面表达式。 import re content='Hello 123 4567 World_This is a Regex Demo' print(len(content)) pattern=re.compile(r'^Hello\s\d\d\d\s\d{4}\s\w{10}') result=re.match(pattern,content) print(result) print(result.group()) print(result.span()) 41 <_sre.SRE_Match object; span=(0, 25), match='Hello 123 4567 World_This'> Hello 123 4567 World_This (0, 25) #匹配目标 #group()会输出完整的匹配结果,而group(1)会输出第一个被()包围的匹配结果 import re content='Hello 1234567 World_This is a Regex Demo' pattern=re.compile(r'^Hello\s(\d{7})\s(\w{5})') result=re.match(pattern,content) print(result) print(result.group()) print(result.group(1)) print(result.group(2)) print(result.span()) <_sre.SRE_Match object; span=(0, 19), match='Hello 1234567 World'> Hello 1234567 World 1234567 World (0, 19) #通用匹配 #.匹配任意字符(除换行符外) #*匹配0次或者多次 import re content='Hello 123 4567 World_This is a Regex Demo' pattern=re.compile(r'^Hello.*Demo$') result=re.match(pattern,content) print(result) print(result.group()) print(result.span()) <_sre.SRE_Match object; span=(0, 41), match='Hello 123 4567 World_This is a Regex Demo'> Hello 123 4567 World_This is a Regex Demo (0, 41) #贪婪匹配与非贪婪匹配 #01贪婪匹配 import re content='Hello 1234567 World_This is a Regex Demo' pattern=re.compile(r'^He.*(\d+).*Demo$') result=re.match(pattern,content) print(result) print(result.group()) print(result.group(1)) <_sre.SRE_Match object; span=(0, 40), match='Hello 1234567 World_This is a Regex Demo'> Hello 1234567 World_This is a Regex Demo 7 #02非贪婪匹配 import re content='Hello 1234567 World_This is a Regex Demo' pattern=re.compile(r'He.*?(\d+).*Demo$') result=re.match(pattern,content) print(result) print(result.group()) print(result.group(1)) <_sre.SRE_Match object; span=(0, 40), match='Hello 1234567 World_This is a Regex Demo'> Hello 1234567 World_This is a Regex Demo 1234567 #但这里注意,如果匹配的结果在字符串结尾,.*?就有可能匹配不到任何内容了,因为它会匹配尽可能少的字符,例如: import re content='https://www.baidu.com/search/error.html' result1=re.match(r'^https.*search/(.*)',content) result2=re.match(r'https.*search/(.*?)',content) print(result1.group(1)) print(result2.group(1)) error.html #修饰符 #正则表达式可以包含一些可选标志修饰符来控制匹配的模式。修饰符被指定为一个可选的标志。 import re content = '''Hello 1234567 World_This is a Regex Demo''' pattern=re.compile(r'^He.*?(\d+).*?Demo$',re.S) result=re.match(pattern,content) print(result.group(1)) 1234567 #转义匹配 import re content='(百度)www.baidu.com' pattern=re.compile(r'\(百度\)www\.baidu\.com') result=re.match(pattern,content) print(result.group()) (百度)www.baidu.com #search() import re content = 'Extra stings Hello 1234567 World_This is a Regex Demo Extra stings' pattern=re.compile('He.*?(\d+).*Demo') result=re.search(pattern,content) print(result.group()) print(result.group(1)) Hello 1234567 World_This is a Regex Demo 1234567 import re html = '''<div id="songs-list"> <h2 class="title">经典老歌</h2> <p class="introduction"> 经典老歌列表 </p> <ul id="list" class="list-group"> <li data-view="2">一路上有你</li> <li data-view="7"> <a href="/2.mp3" singer="任贤齐">沧海一声笑</a> </li> <li data-view="4" class="active"> <a href="/3.mp3" singer="齐秦">往事随风</a> </li> <li data-view="6"><a href="/4.mp3" singer="beyond">光辉岁月</a></li> <li data-view="5"><a href="/5.mp3" singer="陈慧琳">记事本</a></li> <li data-view="5"> <a href="/6.mp3" singer="邓丽君"><i class="fa fa-user"></i>但愿人长久</a> </li> </ul> </div>''' result=re.search('<li.*?active.*?singer="(.*?)">(.*?)</a>',html,re.S) if result: print(result.group(1), result.group(2)) 齐秦 往事随风 #sub()方法 import re content = '54aK54yr5oiR54ix5L2g' result=re.sub('\d+','',content) print(result) aKyroiRixLg log='2017-06-06 15:06:16,148 - root - DEBUG - logger debug message' print(log.split('-')) ['2017', '06', '06 15:06:16,148 ', ' root ', ' DEBUG ', ' logger debug message']
转载请注明原文地址: https://www.6miu.com/read-24269.html

最新回复(0)