找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 6070|回复: 1

[求助] 遇见PYTHON正则表达式的一个疑惑,寻求解答

2

主题

3

帖子

3

积分

贫民

积分
3
CCN 发表于 2016-10-18 23:27:25 | 显示全部楼层 |阅读模式
我使用的是PYTHON3 ,正在学习正则表达式,发现有如下个问题
a=r'<body>\
<h1>Welcome to my page</H1>\
Content is divided into twosections:<br>\
<h2>Introduction</h2>\
Information about me.\
<H2>Hobby</H2>\
Information about my hobby.\
<h2>This is invalid HTML</h3>\
</body>'


>>> re.findall('<[hH][1-6]>.*?</[hH][1-6]>',a)
['<h1>Welcome to my page</H1>', '<h2>Introduction</h2>', '<H2>Hobby</H2>', '<h2>This is invalid HTML</h3>']

然后按网上和资料上各种说法继续
>>> re.findall('<[hH]([1-6])>.*?</[hH]\\1>',a)
['1', '2', '2']

(此处不是很理解,为什么不是将  '<h2>This is invalid HTML</h3>' 过滤掉而是直接出现了 1 2 2)
试着查看资料原来是捕获组问题,好继续
>>> re.findall('<[hH](?:[1-6])>.*?</[hH]\\1>',a)
结果就是报错
aise source.error("invalid group reference", len(escape))

求助啊,不知道咋回事

但是呢
>>> re.findall('<[hH](?:[1-6])>.*?</[hH][1-6]>',a)
['<h1>Welcome to my page</H1>', '<h2>Introduction</h2>', '<H2>Hobby</H2>', '<h2>This is invalid HTML</h3>']

这样就可以,难道是因为无捕获组?: 和回溯引用\1无法兼用?
可是资料也好网上也好各种说都是这样用的,,求大神给看看咋回事儿
回复

使用道具 举报

1419

主题

1891

帖子

291

积分

侠客

积分
291

最佳新人热心会员默默耕耘

whydo1 发表于 2016-10-19 21:46:52 | 显示全部楼层
使用分组,就会返回分组中的内容,不使用分组又不能满足需要. 用下面这个模式吧, 最后把获取到的内容拼接一下就好.
f = re.findall('(<[hH])([1-6])(>.*?</[hH]\\2>)',a)
jg = [ ''.join(i) for i in f]
python3.4.4, win10
回复 支持 反对

使用道具 举报

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

本版积分规则

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