(?m)\A(?=.*REGEX_TO_FIND)(?!.*MISSING_REGEX.*).*\z
L'espressione regolare può ottenere un po 'complicato, ma si rompe in due pezzi.
- Trova il termine/frase/parola corrispondente. Questa parte non è troppo complicata in quanto è ciò che normalmente viene regex.
- Trovare il termine non presente. Questa è la parte difficile, ma è possibile.
Ho un esempio HERE che mostra come si desidera trovare la parola connectReadOnly
nel testo, e non riescono a trovare disconnect
. Poiché il testo contiene connectReadOnly
, inizia a cercare il pezzo successivo, non trovando disconnect
. Dal momento che disconnect
è nel testo non riesce su tutta la stringa (ciò che è necessario per l'intero file corrispondente a). Se giochi con il secondo pezzo, la parte di negazione (?!.*disconnect.*)
, puoi impostarla come qualsiasi regex di cui hai bisogno. Nel mio esempio non voglio trovare disconnect
in nessuna parte del mio codice :) Puoi facilmente sostituirlo con la tua parola da cercare, o anche una regex più complessa da "non trovare".
Il tasto è utilizzare la modalità multi linea, che viene impostata utilizzando l'inizio (?m)
e quindi utilizzando l'inizio/la fine dei caratteri stringa. Utilizzando ^
e $
per iniziare/terminare una riga, dove \A
e \z
avviare e terminare una stringa, estendendo così la corrispondenza sull'intero file.
MODIFICA: per le domande connectReadOnly
e disconnect
: (?m)\A(?=.*connectReadOnly)(?!.*disconnect.*).*\z
. L'esempio aggiornato può essere trovato here.
funziona come un incantesimo. –