# -*- coding:utf-8 -*-
# 正则函数
import re
# 1,match()
# 2 search()
string = "hel3lo wor5ld hel4lo, he,he6ll,hool"
pattern = re.compile("h.*?l")
# 3 findall() 查找符合条件的所有的字符串
# 最终返回一个列表,符合所有条件的
res = re.findall(pattern, string)
print(res)
# 3 split()根据正则将字符串进行分割,返回存放分割后的字符串的列表
pattern = re.compile("\d+")
# (1) 正则 (2) 字符串 3 最大分割次数
res = re.split(pattern, string, 1)
print("2", res)
# 4 sub()函数 用于替换目标字符串中符合正则的字符,默认替换所有,返回是字符串
pattern = re.compile("\d+")
# 1 正则 2 替换后的字符串 3 大字符串 4 替换次数
res = re.sub(pattern, "+", string)
print("3", res)
# string3 = "<p><r></r></p>"
# #pattern = re.
string4 = """<ul><li><a href='/html/tv/hytv/110680.html' title="2017年大陆国产剧《凤囚凰》连载至28">2017年大陆国产剧《凤囚凰》连载至28</a><span><font color=#FF0000>03-05</font></span></li><li><a href='/html/tv/hytv/110723.html' title="2017年香港港台剧《无间道2018(粤语)》连载至16">2017年香港港台剧《无间道2018(粤语)》连载至16</a><span><font color=#FF0000>03-05</font></span></li><li><a href='/html/tv/hytv/110821.html' title="2017年香港港台剧《波士早晨(国语)》连载至15">2017年香港港台剧《波士早晨(国语)》连载至15</a><span><font color=#FF0000>03-05</font></span></li><li><a href='/html/tv/hytv/110825.html' title="2017年香港港台剧《波士早晨(粤语)》连载至43">2017年香港港台剧《波士早晨(粤语)》连载至43</a><span><font color=#FF0000>03-05</font></span></li><li><a href='/html/tv/hytv/110857.html' title="2017年大陆国产剧《我的父亲我的兵》连载至22">2017年大陆国产剧《我的父亲我的兵》连载至22</a><span><font color=#FF0000>03-05</font></span></li><li><a href='/html/tv/hytv/110863.html' title="2017年香港港台剧《三个女人一个因(粤语)》连载至5">2017年香港港台剧《三个女人一个因(粤语)》连载至5</a><span><font color=#FF0000>03-05</font></span></li><li><a href='/html/tv/hytv/110891.html' title="2017年大陆国产剧《人生若如初相见》连载至8">2017年大陆国产剧《人生若如初相见》连载至8</a><span><font color=#FF0000>03-04</font></span></li><li><a href='/html/tv/hytv/110896.html' title="2017年大陆国产剧《利刃出击》连载至7">2017年大陆国产剧《利刃出击》连载至7</a><span><font color=#FF0000>03-04</font></span></li><li><a href='/html/tv/hytv/110897.html' title="2017年大陆国产剧《美好生活》连载至8">2017年大陆国产剧《美好生活》连载至8</a><span><font color=#FF0000>03-04</font></span></li><li><a href='/html/tv/hytv/110895.html' title="2017年大陆国产剧《烈火如歌》连载至6">2017年大陆国产剧《烈火如歌》连载至6</a><span><font color=#FF0000>03-04</font></span></li><li><a href='/html/tv/hytv/110790.html' title="2017年大陆国产剧《谈判官》连载至43">2017年大陆国产剧《谈判官》连载至43</a><span><font color=#FF0000>03-04</font></span></li><li><a href='/html/tv/hytv/109048.html' title="2017年香港港台剧《爱回家之开心速递》连载至268">2017年香港港台剧《爱回家之开心速递》连载至268</a><span><font color=#FF0000>03-04</font></span></li><li><a href='/html/tv/hytv/110820.html' title="2017年大陆国产剧《柜中美人》连载至29">2017年大陆国产剧《柜中美人》连载至29</a><span><font color=#FF0000>03-04</font></span></li><li><a href='/html/tv/hytv/110763.html' title="2017年大陆国产剧《东山晴后雪》连载至28">2017年大陆国产剧《东山晴后雪》连载至28</a><span><font color=#FF0000>03-02</font></span></li><li><a href='/html/tv/hytv/110696.html' title="2017年大陆国产剧《警犬来啦》连载至47">2017年大陆国产剧《警犬来啦》连载至47</a><span><font color=#FF0000>03-01</font></span></li></ul>"""
pattern = re.compile('''<a href='(.*?)' title="(.*?)"''')
res = re.findall(pattern, string4)
for r in res:
print("链接:{} 名称:{}".format(r[0], r[1]))
res = re.search(pattern, string4)
print(res)
if res:
# 正则表达式包含()分组,group获取的匹配字符串
#print(res.group())
#通过分组的索引,获取对应小分组的信息,分组的索引从1 开始
# print(res.group(1))
print(res.group(2))
else:
print("没有匹配到数据")
"""
['hel', 'hel', 'he,he6l', 'hool']
2 ['hel', 'lo wor5ld hel4lo, he,he6ll,hool']
3 hel+lo wor+ld hel+lo, he,he+ll,hool
链接:/html/tv/hytv/110680.html 名称:2017年大陆国产剧《凤囚凰》连载至28
链接:/html/tv/hytv/110723.html 名称:2017年香港港台剧《无间道2018(粤语)》连载至16
链接:/html/tv/hytv/110821.html 名称:2017年香港港台剧《波士早晨(国语)》连载至15
链接:/html/tv/hytv/110825.html 名称:2017年香港港台剧《波士早晨(粤语)》连载至43
链接:/html/tv/hytv/110857.html 名称:2017年大陆国产剧《我的父亲我的兵》连载至22
链接:/html/tv/hytv/110863.html 名称:2017年香港港台剧《三个女人一个因(粤语)》连载至5
链接:/html/tv/hytv/110891.html 名称:2017年大陆国产剧《人生若如初相见》连载至8
链接:/html/tv/hytv/110896.html 名称:2017年大陆国产剧《利刃出击》连载至7
链接:/html/tv/hytv/110897.html 名称:2017年大陆国产剧《美好生活》连载至8
链接:/html/tv/hytv/110895.html 名称:2017年大陆国产剧《烈火如歌》连载至6
链接:/html/tv/hytv/110790.html 名称:2017年大陆国产剧《谈判官》连载至43
链接:/html/tv/hytv/109048.html 名称:2017年香港港台剧《爱回家之开心速递》连载至268
链接:/html/tv/hytv/110820.html 名称:2017年大陆国产剧《柜中美人》连载至29
链接:/html/tv/hytv/110763.html 名称:2017年大陆国产剧《东山晴后雪》连载至28
链接:/html/tv/hytv/110696.html 名称:2017年大陆国产剧《警犬来啦》连载至47
<_sre.SRE_Match object; span=(8, 72), match='<a href=\'/html/tv/hytv/110680.html\' title="2017>
2017年大陆国产剧《凤囚凰》连载至28
"""
2 正则DOTALL模式:re.S开启DOTALL模式,. 可以代替\n
import re
string = '''
aaaa
dddd
ssss
f
ewr
ads
'''
# re.s 作用就是将大字符串的换行符看做一个普通的字符串进行处理
# 这样\n 也能匹配了
pattern = re.compile("a.*?d", re.S)
res = re.search(pattern, string)
print(res.group())
"""
aaaa
d
"""