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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top