|
我使用的是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无法兼用?
可是资料也好网上也好各种说都是这样用的,,求大神给看看咋回事儿
|
|