partita Inverti con espressione regolare [duplicato]
Domanda
Questa domanda ha già una risposta qui:
Con PCRE, come è possibile costruire un'espressione che corrisponderà solo se una stringa è non trovato.
Se dovessi usare grep (che io non sono) io vorrei l'opzione -v.
Un esempio più concreto: voglio che il mio regexp per abbinare se e solo se foo
stringa è non nella stringa. Così sarebbe partita bar
sarebbe ma non foobar
.
Soluzione
Va bene, ho affinato la mia espressione regolare in base alla soluzione che si avvicinò con (che corrisponde erroneamente stringhe che iniziano con 'test').
^((?!foo).)*$
Questa espressione regolare corrisponderà solo le stringhe che non contengono foo. Il primo lookahead negherà le stringhe che iniziano con 'foo', e il secondo farà in modo che pippo non si trova altrove nella stringa.
Altri suggerimenti
In base a risposta di Daniele, io credo di avere qualcosa che funziona:
^(.(?!test))*$
La chiave è che è necessario effettuare l'affermazione negativo su ogni carattere della stringa
Ho già risposto a questa domanda per qualcuno, vedere questi link:
E 'infatti quasi un duplicato. Credo che l'espressione regolare che stai cercando è
(?! foo). *
Crea un'espressione che corrisponde, e l'uso! Match () ... (negazione logica) Questo è probabilmente il modo grep fa comunque ...
È anche possibile fare questo (in python) utilizzando re.split
, e la divisione, sulla base di espressioni regolari, tornando così tutte le parti che non corrispondono alla regex, frazionamento in base a ciò non corrisponde a un'espressione regolare