正则表达式re模块
1、贪婪模式、非贪婪模式
import re
# 贪婪模式 从开头匹配到结尾 默认
# 非贪婪
one = 'mdfsdsfffdsn12345656n'
two = "a\d"
pattern = re.compile('a\b')
# pattern = re.compile('m(.*?)n')
result = pattern.findall(two)
print(result)
2、 . 除了 换行符号\n 之外的 匹配
import re
# . 除了 换行符号\n 之外的 匹配
one = """
msfdsdffdsdfsn
1234567778888N
"""
#re.S | re.I 换行 大写
pattern = re.compile('m(.*)n', re.S | re.I)
result = pattern.findall(one)
print(result)
3、match、search、findall、sub、split
import re
one = 'abc 123'
patter = re.compile('\d+')
# match 从头匹配 匹配一次
result = patter.match(one)
# search 从任意位置 , 匹配一次
result = patter.search(one)
# findall 查找符合正则的 内容 -- list
result = patter.findall(one)
# sub 替换字符串
result = patter.sub('#',one)
# split 拆分
patter = re.compile(' ')
result = patter.split(one)
4、拆分字符串
import re
one = 'asdsfsgsh'
#标准时 s 拆分
pattern = re.compile('s')
result = pattern.split(one)
print(result)
5、匹配中文
import re
two = '<a href="http://news.baidu.com" target="_blank" class="mnav c-font-normal c-color-t">新闻新闻</a>'
#python中 匹配中文 Unicode范围 4E00-9FA5
pattern = re.compile('[\u4E00-\u9FA5]+')
result = pattern.findall(two)
6、#正则解析数据
#每个新闻的title url
import re
import requests
url = 'http://news.baidu.com/'
headers = {
"User-Agent":'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:88.0) Gecko/20100101 Firefox/88.0'
}
data = requests.get(url,headers=headers).content.decode()
#正则解析数据
#每个新闻的title url
#<a href="http://news.cyol.com/gb/live/content_5J0EGfwK811.html" target="_blank" class="a3" mon="ct=1&a=1&c=top&pn=2">“学党史 强信念 跟党走”学习教育主题直播</a>
pattern = re.compile('<a href="(.*)">(.*)</a>')
result = pattern.findall(data)
print(result)
# with open('news01.html','w',encoding='utf-8') as f:
# f.write(data)