Ich habe den folgenden regulären Ausdruck:.Positive vorwärtsgerichtete Behauptung und * Zeichen in Python
passw = re.compile(r'^(?=.*\d)(?=.*[A-Z])(?=.*[\$|\?\!])[A-Za-z\d$!&]{8}$')
, die ich als String der Länge interpretieren kann 8, die mindestens eine Zahl, einen großen Brief und einer der enthalten muss Zeichen ($ ?!). Und besteht auch nur aus Zahlen, Buchstaben und $?!.
? = - Dieses Symbol wird als Lookahead Assertion bezeichnet: Zum Beispiel passt Isaac (?=Asimov)
nur dann 'Isaac '
, wenn es von 'Asimov' gefolgt wird.
Aber wie können wir .*
Zeichen interpretieren? Was bedeutet es in Regex? Können wir es in dieser Situation vermeiden?
'*' nicht ein Zeichen ist. Es ist das '.' Zeichen (bedeutet" irgendein Zeichen ") und das' * 'Zeichen (das bedeutet" irgendeine Anzahl von denen (einschließlich null) "). Also '. *' Bedeutet "beliebig viele Zeichen". – khelwood
'. *' Passt auf jedes Zeichen (außer Newline) zwischen null und unbegrenzten Zeiten. –
Gibt es einen Grund, warum Sie versuchen, all diese Prüfungen in einem einzigen regulären Ausdruck durchzuführen? Haben Sie darüber nachgedacht, zwei oder drei separate Prüfungen durchzuführen, die einfacher zu lesen und zu warten sind als ein langer Regex? –