È possibile eseguire la negazione delle stringhe nelle espressioni regolari? Devo abbinare tutte le stringhe che non contengono la stringa ".."
. So che è possibile utilizzare ^[^\.]*$
per far corrispondere tutte le stringhe che non contengono "."
ma devo abbinare più di un carattere. So che potrei semplicemente abbinare una stringa contenente ".."
e quindi annullare il valore di ritorno della corrispondenza per ottenere lo stesso risultato, ma mi chiedevo solo se fosse possibile.Negazione delle stringhe utilizzando le espressioni regolari
35
A
risposta
42
È possibile utilizzare lookaheads negativi:
^(?!.*\.\.).*$
che provoca l'espressione non corrisponde se si può trovare una sequenza di due periodi in qualsiasi punto della stringa.
+6
Ah, abilità di modifica ninja :) +1 –
5
^(?:(?!\.\.).)*$
corrisponderà solo se non ci sono due punti consecutivi in qualsiasi punto della stringa.
Collegato: [Espressioni regolari e annullamento di un intero gruppo di caratteri] (http://stackoverflow.com/questions/977251/regular-expressions-and-negating-a-whole-character-group) – Unihedron