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?
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?
provare questo:
^(?!.*DontMatchThis).*$
Alcune spiegazioni, per favore. Come funziona? – bikashg
@bikashg: vedere qui: http://stackoverflow.com/a/11125488/47190 –
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 ($
)).Questa è una buona aggiunta alla risposta accettata. – VMAtm
Perché si desidera eseguire questa operazione con espressioni regolari e non utilizzare String.IndexOf? –
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. –