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.

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top