2009-08-23 11 views
20

Voglio abbinare qualsiasi stringa che fa non contenere la stringa "DontMatchThis".C# Regex per far corrispondere una stringa che non contiene una determinata stringa?

Qual è la regex?

+0

Perché si desidera eseguire questa operazione con espressioni regolari e non utilizzare String.IndexOf? –

+12

Perché a volte la regex è in configurazione e non è possibile modificare il codice. O perché ne hai bisogno come sottoespressione di un'altra regex più complessa. O uno dei tanti motivi. Potresti anche chiedere: "Perché non fai in modo che il tuo gatto ti mima il testo tramite il medium della danza interpretativa?". A volte non hai il tuo gatto a portata di mano. –

risposta

45

provare questo:

^(?!.*DontMatchThis).*$ 
+11

Alcune spiegazioni, per favore. Come funziona? – bikashg

+0

@bikashg: vedere qui: http://stackoverflow.com/a/11125488/47190 –

11

alla regex di trovare una stringa che non contiene un determinato modello è

(?s)^(?!.*DontMatchThis).*$ 

Se si utilizza il modello senza il (?s) (che è una versione in linea di il flag RegexOptions.Singleline che fa corrispondere . a un simbolo LF newline e tutti gli altri caratteri), il DontMatchThis verrà cercato solo sulla prima riga e solo una stringa senza simboli LF verrà abbinata a .*. Dettagli

modello:

  • (?s) - a/modificatore di SingleLine DOTALL rendendo . partita qualsiasi carattere
  • ^ - inizio di ancoraggio stringa
  • (?!.*DontMatchThis) - un negative lookahead controllando se ci sono 0 o più caratteri (abbinati con avido .* subpattern - NOTA un pigro .*? versione (corrispondente al minor numero possibile di caratteri prima della successiva corrispondenza subpattern) potrebbe portare a termine il lavoro più rapidamente se DontMatchThis è previsto più vicino all'avvio della stringa) seguito da DontMatchThis
  • .* - qualsiasi zero o più caratteri, il maggior numero possibile, fino a
  • $ - la fine della stringa (vedere Caratteri di ancoraggio: dollaro ($)).
+1

Questa è una buona aggiunta alla risposta accettata. – VMAtm

Problemi correlati