鱼C论坛

 找回密码
 立即注册
查看: 2156|回复: 3

正则表达匹配问题

[复制链接]
发表于 2020-10-22 14:35:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
见以下代码, 看正则表达式是可以匹配, 在网上在线测试也是可以匹配的. 为什么在IDLE中匹配不到任何东西?
bp和pc表达式在线测试匹配都是可以匹配的到, 在IDLE中就匹配不到.
>>> b = '<img class="test" src="/img/logo.gif" title="测试" />'
>>> bp = '<img\b.*?src="(.*?)".*?>'
>>> re.findall(bp,b)
[]
>>> pc = '<img\b.*?src="([^"]*)"[^>]*>'
>>> re.findall(pc,b)
[]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-22 15:43:25 | 显示全部楼层
为什么要加\b?
import re
b = '<img class="test" src="/img/logo.gif" title="测试" />'
bp = '<img.*?src="(.*?)".*?>'
print(re.findall(bp,b))
pc = '<img.*?src="([^"]*)"[^>]*>'
print(re.findall(pc,b))

['/img/logo.gif']
['/img/logo.gif']
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-23 09:01:32 | 显示全部楼层
本帖最后由 Nate_2020 于 2020-10-23 09:02 编辑


从理论上分析加\b才精确才对呀, \b为单词边界, 如果没有\b, 那imgclass也是会匹配的
>>> b1 = '<imgclass="test" src="/img/logo.gif" title="测试" />'
>>> print(re.findall(bp,b))
['/img/logo.gif']
>>> print(re.findall(bp,b1))
['/img/logo.gif']
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-23 09:06:26 | 显示全部楼层
本帖最后由 Nate_2020 于 2020-10-23 09:07 编辑

突然发现了问题, 不是\b的问题, 是表达式少了r的问题, 导致\没有起到作用.
>>> b
'<img class="test" src="/img/logo.gif" title="测试" />'
>>> bp1 = r'<img\b.*?src="(.*?)".*?>'
>>> print(re.findall(bp1,b))
['/img/logo.gif']
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-11 00:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表