正则怎么匹配这段html代码

import re

s = 'r<li title=" 天玑1100">CPU型号: 天玑1100</li>'
a = '<li title="2021011606369214">证书编号:2021011606369214</li>'
v = re.findall(r'<li title=".+">(.+)</li>',s)
print(v)

我使写的这个办法,两个全部都可以匹配出来,能不能实现精准定位,就匹配其中一个,另外的无法匹配。

['CPU型号:\xa0天玑1100']

最后匹配一个标签的时候还出现了这个问题,怎么能将\xa0给去掉

你这样改:

v = re.findall(r'<li title=".+">CPU型号:(.+)</li>', s)

下面代码可分开提取,用\s+匹配去掉\xa0。

import re
s = 'r<li title=" 天玑1100">CPU型号: 天玑1100</li>'
a = '<li title="2021011606369214">证书编号:2021011606369214</li>'
v = re.findall(r'<li title=".+">.*:\s+(.+)</li>', s)
print(v)
v1 = re.findall(r'<li title=".+">(.*):', s)
print(v1)

如有帮助,请采纳。

你题目的解答代码如下:(如有帮助,望采纳!谢谢! 点击我这个回答右上方的【采纳】按钮)

import re
s = 'r<li title=" 天玑1100">CPU型号: 天玑1100</li>'
a = '<li title="2021011606369214">证书编号:2021011606369214</li>'
req = r'<li title="[^<>"]+">(CPU型号.+?)</li>'
s = re.sub(r'\xa0',' ',s) #把\xa0先替换成空格
v1 = re.findall(req,s) #可以匹配
v2 = re.findall(req,a) #无法匹配,返回空列表[]
print(v1)
print(v2)

按照你的代码,我运行结果满足你的要求

img

import re

s = 'r<li title=" 天玑1100">CPU型号: 天玑1100</li>' \
    '<li title="2021011606369214">证书编号:2021011606369214</li>'
a = '<li title="2021011606369214">证书编号:2021011606369214</li>'
v = re.findall(r'<li title=".*?">CPU型号: (.*?)</li>', s)
print(v)

有帮助的话采纳下