Mit re
für das Parsen von HTML nicht wirklich notwendig, da sie, dass viele brillant geschriebene Bibliotheken zu tun haben, aber immer noch eine Art und Weise können Sie erreichen, was Sie wollen von:
- Parsing-Tags.
- ihre innerhtml ändern.
Lassen Sie uns sagen Sie einige html haben:
a = """
<title>GateUser UserGate</title>
<div style="something">
KameHame Ha
</div>
"""
Jetzt können Sie relativ leicht analysieren die Tags einschließlich der innerhtml:
blanks = r"([\s\n\t]+?)" # totally optional depending on code indentation and stuff.
pat = re.compile(r"(<.+>){0}(.*?){0}(</.+>)".format(blanks))
# tuples don't support item assignment, so mapping list, but still tuples fine too.
tags_with_inner = list(map(list, pat.findall(a)))
# [ ['<title>', '', 'GateUser UserGate', '', '</title>'],
# ['<div style="something">', '\n ', 'KameHame Ha', '\n ', '</div>']]
Und dann regex
auf der inneren nur entsprechen:
only_inner = re.compile(r"\b\w{8}\b") # your expression
for inner in tags_with_inner:
inner[2] = only_inner.sub("ADDED", inner[2])
print ("".join(inner))
# <title>ADDED ADDED</title>
# <div style="something">
# ADDED Ha
# </div>
Hand 're.sub' einen vierten Parameter:' re.GLOBA L'. klar – L3viathan
nicht, können Sie bitte etwas näher erläutern? Möchten Sie beide Wörter oder irgendetwas innerhalb des Tags ersetzen? –
Regex und HTML passen nicht gut zusammen ([obligatorischer Link] (https://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags)). Warum verwenden Sie keinen HTML-Parser, um den Textinhalt des Tags zu erhalten, und modifizieren Sie nur diesen? – mata