2 Stimmen

Unicode-Zeichenfolge in PCRE-Regular Expression in Python übersetzen

Ich habe einen Unicode-String

 u"\\uC3A9\\xe9" , den ich in einen von PCRE unterstützten regulären Ausdruck    "\\x{c3a9}\\x{e9}"in Python umwandeln möchte.

Gibt es bereits ein Modul, das das macht?

2voto

Andrew Clark Punkte 193562

Ich bin mir keiner Module bewusst, um dies zu tun, aber hier ist eine mögliche Lösung:

import re

def pcre_escape_repl(match):
    char = match.group(0)
    if ord(char) in range(32, 127):
        # Wenn dies ein druckbarer ASCII-Zeichen ist, verwenden Sie re.escape anstelle einer \x Fluchtsequenz
        return re.escape(char)
    # Ersetzen Sie nicht-ascii (oder nicht-druckbare) Zeichen durch eine \x Fluchtsequenz
    return r'\x{' + hex(ord(char))[2:] + '}'

def pcre_escape(s):
    regex = re.compile('.', re.DOTALL)
    return regex.sub(pcre_escape_repl, s)

Beispiele:

>>> print pcre_escape(u"\uC3A9\xe9")
\x{c3a9}\x{e9}
>>> print pcre_escape("[foo]{bar}")
\[foo\]\{bar\}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X