Negando um conjunto de palavras via java regex
-
20-09-2019 - |
Pergunta
Eu gostaria de negar um conjunto de palavras usando o java regex.
Diga, eu quero negar cvs
, svn
, nvs
, mvc
. Eu escrevi um regex que é ^[(svn|cvs|nvs|mvc)]
.
Alguma como isso parece não estar funcionando.
Solução
Experimente isso:
^(?!.*(svn|cvs|nvs|mvc)).*$
Isso corresponderá ao texto se não contiver um de SVN, CVS, NVS ou MVC.
Esta é uma pergunta semelhante: C# regex para corresponder a uma string que não contém uma certa string?
Outras dicas
Não é tão simples assim. Se você deseja negar uma palavra, precisa dividi -la em letras e negar cada letra.
Então, para negar
/svn/
você tem que escrever
/[^s][^v][^n]/
Então, o que você deseja filtrar vai se transformar em regex realmente feio e eu acho que é melhor ideia usar este regex
/svn|cvs|nvs|mvc/
E quando você testar sua string contra ela, apenas negue o resultado.
No JS, isso ficaria menos com isso:
!/svn|cvs|nvs|mvc/.test("this is your test string");
Seu regex está errado. Entre colchetes, você pode colocar os personagens para exigir ou ignorar. Se você não encontrar ^(svn|cvs|nvs|mvc)$
, você está bem.