我一直试图在字符串
上将正则表达式模式>(\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"]
有人知道我在做什么错吗?
谢谢
答案 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条件的捕获组。