Desidero annullare una serie di parole utilizzando java regex.Negazione di un set di parole tramite java regex
Dire, voglio annullare cvs
, svn
, nvs
, mvc
. Ho scritto una regex che è ^[(svn|cvs|nvs|mvc)]
.
Alcuni come sembra non funzionare.
Desidero annullare una serie di parole utilizzando java regex.Negazione di un set di parole tramite java regex
Dire, voglio annullare cvs
, svn
, nvs
, mvc
. Ho scritto una regex che è ^[(svn|cvs|nvs|mvc)]
.
Alcuni come sembra non funzionare.
Prova questo:
^(?!.*(svn|cvs|nvs|mvc)).*$
questo corrisponderà testo se non contiene uno di SVN, CVS, NVS o MVC.
Questa è una domanda simile: C# Regex to match a string that doesn't contain a certain string?
Non è così semplice. Se vuoi negare una parola devi dividerla in lettere e negare ogni lettera.
modo per negare
/svn/
si deve scrivere
/[^s][^v][^n]/
Quindi, ciò che si desidera filtrare si trasformerà in realtà brutta espressione regolare e penso che sia meglio l'idea di utilizzare questo regex
/svn|cvs|nvs|mvc/
e quando si prova la stringa contro di esso, basta annullare il risultato.
In JS questo sarebbe un aspetto più meno così:
!/svn|cvs|nvs|mvc/.test("this is your test string");
tuo regex è sbagliato. Tra parentesi quadre, puoi inserire caratteri da richiedere o da ignorare. Se non trovi ^(svn|cvs|nvs|mvc)$
, stai bene.
che in realtà non è utile in quanto questo non è puramente regex. se non si ha la possibilità di cambiare il codice, questo non risolverà il problema di QA. – Alex
Eventuali duplicati: http://stackoverflow.com/questions/42990/regex-to-match-against-something-that-is-not-a-specific-substring – finnw
Vedi anche: http://stackoverflow.com/questions/406230/regular-expression-to-match-string-not-contain-a-word – finnw
... e http://stackoverflow.com/questions/717644/ regular-expression-that-doesnt-contain-certain-string – finnw