*, ?, +tutti i caratteri corrispondono a questo carattere. Quale carattere significa "non" corrisponde a questo? Gli esempi aiuterebbero.
*, ?, +tutti i caratteri corrispondono a questo carattere. Quale carattere significa "non" corrisponde a questo? Gli esempi aiuterebbero.
Risposte:
È possibile utilizzare classi di caratteri negate per escludere determinati caratteri: ad esempio [^abcde], corrisponderà a qualsiasi cosa tranne che a caratteri a, b, c, d, e.
Invece di specificare tutti i caratteri letteralmente, puoi usare abbreviazioni all'interno delle classi di caratteri: [\w](minuscolo) corrisponderà a qualsiasi "carattere della parola" (lettera, numeri e trattino basso), [\W](maiuscolo) corrisponderà a qualsiasi cosa tranne che ai caratteri delle parole; allo stesso modo,[\d] corrisponderà alle cifre 0-9 mentre [\D]corrisponde a qualsiasi cosa tranne le cifre 0-9 e così via.
Se usi PHP puoi dare un'occhiata alla documentazione delle classi di caratteri regex .
Esistono due modi per dire "non corrispondono": intervalli di caratteri e lookahead / lookbehind negativo di larghezza zero.
Il primo: non corrispondono a, b, co0 :[^a-c0]
Quest'ultimo: corrisponde a qualsiasi stringa di tre lettere tranne fooe bar:
(?!foo|bar).{3}
o
.{3}(?<!foo|bar)
Inoltre, una correzione per voi: *, ?e +non in realtà corrispondono nulla. Sono operatori di ripetizione e seguono sempre un operatore di corrispondenza. Così, a+mezzi corrispondono uno o più dei a, [a-c0]+mezzi corrispondono uno o più dei a, b, co 0, mentre [^a-c0]+sarebbe abbinare una o più di tutto ciò che non era a, b, co 0.
^((?!foo).)+$Trova qualsiasi riga che non contenga regex101.com/r/z6a65l/4
[^] (all'interno di [] ) è la negazione nell'espressione regolare mentre ^è "l'inizio di una stringa"
[^a-z] corrisponde a qualsiasi carattere singolo che non lo sia da "a" a "z"
^[a-z] significa che la stringa inizia con da "a" a "z"
^ utilizzato all'inizio di un intervallo di caratteri o asserzioni lookahead / lookbehind negative.
>>> re.match('[^f]', 'foo')
>>> re.match('[^f]', 'bar')
<_sre.SRE_Match object at 0x7f8b102ad6b0>
>>> re.match('(?!foo)...', 'foo')
>>> re.match('(?!foo)...', 'bar')
<_sre.SRE_Match object at 0x7f8b0fe70780>
?!negli ultimi 2 esempi o puoi usare solo !da solo? Cosa ci ?fa?
?di per dire che è un'estensione. Altri motori di regex possono avere le proprie regole.