Negar Expressão Regular

Olá caros,

Por exemplo…eu tenho uma expressão [A-Z][a-z][0-9] e vou utilizar no replaceAll

só que eu gostaria de negar essa expressão… digamos um not " ! "!

por exemplo, se o usuário digitar: Zebra 1986 #$%$#&**,

String texto = “Zebra 1986 #$%$#&**”

texto.replaceAll("[A-Z][a-z][0-9]", “_”); // negar a expressão de forma que ele substitua tudo por _ o que NÃO for letras e número…

gostaria que isso resultasse em…Zebra 1986 _____

resumindo posso negar uma expressão ?

obrigado

:wink: :stuck_out_tongue:

Dá uma vista de olhos em http://java.sun.com/javase/6/docs/api/java/util/regex/Pattern.html

Tem lá uma parte que te interessa:

[quote]\w A word character: [a-zA-Z_0-9]
\W A non-word character: [^\w]
[/quote]

uma vista de olhos ? rsrs… :lol: :lol: :lol:

obrigado cara, isso me ajudou “[a-zA-Z_0-9]”

para “negar” essa expressão basta só colocar o “^” na frente de modo que fique

“[^a-zA-Z_0-9]”,

vou fazer mais uns testes aqui.

valeu…!

É uma expressão utilizada cá em Portugal :slight_smile:

E quanto ao problema, tens o \W que é exactamente o que tu queres.

Aqui no Brasil é da uma olhada mesmo…

Isso aqui me ajudou bastante pra entender expressões regulares, http://guia-er.sourceforge.net/ é um livro muito bom explicando os operadores e seus usos…

Abraço.

Detalhe que negar uma lista de caracteres não é o mesmo que negar uma expressão regular inteira (que nem sempre envolve apenas uma lista), cuidado :wink:

por exemplo, eu quero tudo o que não seja “batata” seria a expressão (?!batata) que não é suportada por todos os aplicativos