秀屿区建设局网站,制作网站的软件下载,跟网站做流量,wordpress如何更新目录 常见匹配模式re.match 从字符串的起始位置匹配一个模式泛匹配匹配目标贪婪匹配非贪婪匹配匹配模式转义 re.search 扫描整个字符串并返回第一个成功的匹配re.findall 以列表形式返回全部能匹配的子串re.sub 替换字符串中每一个匹配的子串后返回替换后的字符串 re.compile 将… 目录 常见匹配模式re.match 从字符串的起始位置匹配一个模式泛匹配匹配目标贪婪匹配非贪婪匹配匹配模式转义 re.search 扫描整个字符串并返回第一个成功的匹配re.findall 以列表形式返回全部能匹配的子串re.sub 替换字符串中每一个匹配的子串后返回替换后的字符串 re.compile 将正则字符串编译成正则表达式对象 常见匹配模式
模式描述\w匹配字母数字及下划线\W匹配非字母数字下划线\s匹配任意空白字符等价于 [\t\n\r\f].\S匹配任意非空字符\d匹配任意数字等价于 [0-9]\D匹配任意非数字\A匹配字符串开始\Z匹配字符串结束如果是存在换行只匹配到换行前的结束字符串\z匹配字符串结束\G匹配最后匹配完成的位置\n匹配一个换行符\t匹配一个制表符^匹配字符串的开头$匹配字符串的末尾。.匹配任意字符除了换行符当re.DOTALL标记被指定时则可以匹配包括换行符的任意字符。[…]用来表示一组字符,单独列出[amk] 匹配 ‘a’‘m’或’k’[^…]不在[]中的字符[^abc] 匹配除了a,b,c之外的字符。*匹配0个或多个的表达式。匹配1个或多个的表达式。?匹配0个或1个由前面的正则表达式定义的片段非贪婪方式{n}精确匹配n个前面表达式。{n, m}匹配 n 到 m 次由前面的正则表达式定义的片段贪婪方式a|b匹配a或b( )匹配括号内的表达式也表示一个组
re.match 从字符串的起始位置匹配一个模式
re.match 尝试从字符串的起始位置匹配一个模式如果不是起始位置匹配成功的话match()就返回none。总结尽量使用泛匹配、使用括号得到匹配目标、尽量使用非贪婪模式、有换行符就用re.S
泛匹配
import recontent Hello 123 4567 World_This is a Regex Demo
result re.match(^Hello.*Demo$, content)
print(result)
print(result.group())
print(result.span())re.Match object; span(0, 41), matchHello 123 4567 World_This is a Regex Demo
Hello 123 4567 World_This is a Regex Demo
(0, 41)匹配目标
import recontent Hello 1234567 World_This is a Regex Demo
result re.match(^Hello\s(\d)\sWorld.*Demo$, content)
print(result)
print(result.group(1))
print(result.span())re.Match object; span(0, 40), matchHello 1234567 World_This is a Regex Demo
1234567
(0, 40)贪婪匹配
import recontent Hello 1234567 World_This is a Regex Demo
result re.match(^He.*(\d).*Demo$, content)
print(result)
print(result.group(1))re.Match object; span(0, 40), matchHello 1234567 World_This is a Regex Demo
7非贪婪匹配
import recontent Hello 1234567 World_This is a Regex Demo
result re.match(^He.*?(\d).*Demo$, content)
print(result)
print(result.group(1))_sre.SRE_Match object; span(0, 40), matchHello 1234567 World_This is a Regex Demo
1234567匹配模式
import recontent Hello 1234567 World_This
is a Regex Demoresult re.match(^He.*?(\d).*?Demo$, content, re.S) # 可以匹配到换行
print(result.group(1))1234567转义
import recontent price is $5.00
result re.match(price is \$5\.00, content)
print(result)re.Match object; span(0, 14), matchprice is $5.00re.search 扫描整个字符串并返回第一个成功的匹配
re.search 扫描整个字符串并返回第一个成功的匹配。
import re
content Extra stings Hello 1234567 World_This is a Regex Demo Extra stings
result re.match(Hello.*?(\d).*?Demo, content)
print(result) # None# 总结为匹配方便能用search就不用match
import re
content Extra stings Hello 1234567 World_This is a Regex Demo Extra stings
result re.search(Hello.*?(\d).*?Demo, content)
print(result)
print(result.group(1))_sre.SRE_Match object; span(13, 53), matchHello 1234567 World_This is a Regex Demo
1234567re.findall 以列表形式返回全部能匹配的子串
搜索字符串以列表形式返回全部能匹配的子串。
import rehtml div idsongs-listh2 classtitle经典老歌/h2p classintroduction经典老歌列表/pul idlist classlist-groupli data-view2一路上有你/lili data-view7a href/2.mp3 singer任贤齐沧海一声笑/a/lili data-view4 classactivea href/3.mp3 singer齐秦往事随风/a/lili data-view6a href/4.mp3 singerbeyond光辉岁月/a/lili data-view5a href/5.mp3 singer陈慧琳记事本/a/lili data-view5a href/6.mp3 singer邓丽君但愿人长久/a/li/ul
/div
results re.findall(li.*?\s*?(a.*?)?(\w)(/a)?\s*?/li, html, re.S)
print(results)
for result in results:print(result[1])[(, 一路上有你, ), (a href/2.mp3 singer任贤齐, 沧海一声笑, /a), (a href/3.mp3 singer齐秦, 往事随风, /a), (a href/4.mp3 singerbeyond, 光辉岁月, /a), (a href/5.mp3 singer陈慧琳, 记事本, /a), (a href/6.mp3 singer邓丽君, 但愿人长久, /a)]
一路上有你
沧海一声笑
往事随风
光辉岁月
记事本
但愿人长久re.sub 替换字符串中每一个匹配的子串后返回替换后的字符串
替换字符串中每一个匹配的子串后返回替换后的字符串。
import recontent Extra stings Hello 1234567 World_This is a Regex Demo Extra stings
content re.sub(\d, , content)
print(content)# Extra stings Hello World_This is a Regex Demo Extra stingsimport recontent Extra stings Hello 1234567 World_This is a Regex Demo Extra stings
content re.sub((\d), r\1 8910, content)
print(content)# Extra stings Hello 1234567 8910 World_This is a Regex Demo Extra stingsre.compile 将正则字符串编译成正则表达式对象
将正则字符串编译成正则表达式对象
import recontent Hello 1234567 World_This
is a Regex Demo
pattern re.compile(Hello.*Demo, re.S)
result re.match(pattern, content)
#result re.match(Hello.*Demo, content, re.S)
print(result)# re.Match object; span(0, 40), matchHello 1234567 World_This\nis a Regex Demo