2 Stimmen

Seltsames regelmäßiges Muster Verhalten in Python

Ich habe dieses folgende Programm in Python.

import re

data = '''component FA_8 is
port(   a : in bit_vector(7 downto 0);
    b: in bit_vector(7 downto 0);
    s: out bit_vector(7 downto 0);
    c: out bit);
end component;'''

m = re.search(r'''component\ +(\w+)\ +is[\ \n]+
                port\ *[(]\ +''', data, re.I | re.VERBOSE)

if m:
    print m.group()
else:
    print "Muster nicht gefunden"

Ich kann nicht herausfinden, warum es nicht funktioniert. Wenn ich das Ende des regulären Musters mit port\ *[(]\ * ändere, dann passt es.

1voto

stema Punkte 85725

Wenn der Quantifizierer der einzige Unterschied ist, bedeutet dies, dass im Text kein Leerzeichen vorhanden ist. Könnte es sein, dass es sich um ein Tabulatorzeichen im Originalstring handelt?

Ich würde das maskierte Leerzeichen durch ein Leerzeichen \s ersetzen. \s entspricht einem Leerzeichenzeichen. Dies ist ein Leerzeichen, ein Tabulator, \r und \n (und andere Leerzeichenzeichen).

m = re.search(r'''component\s+(\w+)\s+is\s+
            port\s*[(]\s+''', data, re.I | re.VERBOSE)

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