Comment puis-je faire correspondre un modèle tant qu'il ne se trouve pas dans une balise HTML?Regex qui ne correspond qu'au texte qui ne fait pas partie du balisage HTML? (python)
Voici ma tentative ci-dessous. Quelqu'un a une meilleure approche/différente?
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
sortie:
mxry hxd x <b class="foo"> little lxxmx</b>
Notes:
- Le < [^>] *> modèle pour correspondre à des balises HTML est évidemment imparfait - je l'ai écrit rapidement et ne l'ai pas tenir compte de la possibilité de placer des chevrons entre des attributs cotés (par exemple, '< img alt = "suivant >"/>'). Il ne tient pas compte des tags ou des commentaires, soit <script> ou <style>.
double: http://stackoverflow.com/questions/181095/regular-expression-to-extract-text-from-html –
double: http://stackoverflow.com/questions/317053/regular-expression-for -extracting-tag-attributes –
Je ne pense pas que ce soient des dupes autres que celles qui concernent à la fois les expressions régulières et le html –