正则表达式与逻辑或生成无元组

时间:2018-10-23 08:35:18

标签: python regex

我一直试图在字符串

上将正则表达式模式>(\S.*?)<|#{1}\s+?(\w.*)与方法re.findall一起使用

<h1 id="section">First Section</h1><a name="first section">
# Section_2

我的预期结果是两个列表

["First Section"]
["Section_2"]

但是我知道

["First Section",""]
["","Section_2"] 

有人知道我在做什么错吗?

谢谢

1 个答案:

答案 0 :(得分:0)

这适用于您的特殊情况。我尝试通过一些小的更改使结构与您的正则表达式大致相同。

import re  
a = '<h1 id="section">First Section</h1><a name="first section">'
b = '# Section_2'
r = re.compile(r'((?<=>)\S.*?(?=<)|(?<=#{1}\s)\w.*)')

print(r.findall(a))
print(r.findall(b))

之所以得到两个输出,是因为您有两个捕获组-(\S.*?)(\w.*)。空表示该组没有捕获任何东西。

在答案的正则表达式中,我仅使用一个具有OR条件的捕获组。