Как я могу создать совпадение шаблона, если он не находится внутри HTML-тега?
Здесь моя попытка ниже. У кого-то есть лучший/другой подход?
import re
inputstr = 'mary had a <b class="foo"> little loomb</b>'
rx = re.compile('[aob]')
repl = 'x'
outputstr = ''
i = 0
for astr in re.compile(r'(<[^>]*>)').split(inputstr):
i = 1 - i
if i:
astr = re.sub(rx, repl, astr)
outputstr += astr
print outputstr
выход:
mxry hxd x <b class="foo"> little lxxmx</b>
Примечания:
Поскольку вы используете Python в любом случае, если бы я был вами, я бы посмотрел на Beautiful Soup, который является Парсер HTML/XML Python. На самом деле, существует так много особых случаев и головных болей с написанием собственного анализатора, это просто не стоит усилий. Ваше регулярное выражение будет неуправляемо большим и все равно не даст правильных результатов во всех случаях.
Просто используйте Beautiful Soup.