如果您使用 p.search,请使用 findall 或 finditer 代替。
import re
tag = 'unique'
# p = re.compile("<" + tag + ">([aA-zZ0-9\-\s:]*)</" + tag + ">")
# aA-zZ means a, range A-z and Z. this includes some sign like '[', '^' ... .
# the last '-' in character group( inside [ and ] ) matches '-' self.
p = re.compile("<" + tag + ">([a-zA-Z0-9\s:-]*)</" + tag + ">")
ml = "<unique>UNIQUE Passive - Maim:</unique> Basic attacks deal 10 bonus magic damage to monsters on hit.<br><unique>UNIQUE Passive - Butcher:</unique> Damage dealt to monsters increased by 10%.<br><br><i>ique Passives with the same name don't stack.)</i>"
m = p.search(ml)
print m.group()
print
print p.findall(ml)
print
for m in p.finditer(ml):
print m.group()
输出:
<unique>UNIQUE Passive - Maim:</unique>
['UNIQUE Passive - Maim:', 'UNIQUE Passive - Butcher:']
<unique>UNIQUE Passive - Maim:</unique>
<unique>UNIQUE Passive - Butcher:</unique>