Expressão regular para invalidar palavra

2 respostas
D

Saudações a todos.

Eu estou tentando fazer uma exp. regular e tenho o seguinte:

Regex: " \bcancelar{0,7}\b "

onde:

cancelar : Válido
cancelarQqrCoisaDepois : inválido

E eu gostaria de simplesmente inverter isto, onde o cancelar seria inválido.
Eu coloquei o ^ na frente, depois do \b e nada acontece… :confused:

Agradeço desde já.

2 Respostas

Guilherme_Gomes

Eu lembro de ter tido problemas com isso.
Eu sei que existe como excluir uma palavra em regex, não lembro se Java suporta isso.

Simplesmente colocar ‘^’ não funciona, pois ‘^’ fora de “[…]” significa inicio de linha.

Mas um jeito que você pode verificar se a palavra “cancelar” está dentro da String é:

String x = ...;
if (x.length() != x.replace("cancelar","").length()) {
    // tem a palavra cancelar...
}

Vou relembrar regex aqui e se achar um jeito melhor, aviso!

Guilherme_Gomes

Achei ^^

public class RegexNotContains {
	public static void main(String[] args) {
		String x = "cancelarLalalala";

		System.out.println(x.matches("((?!cancelar).)*"));
		System.out.println(x.matches("((?!abacate).)*"));
	}
}

Só precisa adaptar pra sua necessidade real…

Criado 19 de outubro de 2011
Ultima resposta 19 de out. de 2011
Respostas 2
Participantes 2