tipo, eu sei q fazendo:
/[^a]*/i
eu estaria negando a letra A ou a
mas como eu faco pra negar uma string?? tipo, pra negar a palavra boca?
pq c eu fizer:
/[^boca]*/i
eu estarei negando as letras b, o, c e a, e n negando a palavra boca…
tipo, eu sei q fazendo:
/[^a]*/i
eu estaria negando a letra A ou a
mas como eu faco pra negar uma string?? tipo, pra negar a palavra boca?
pq c eu fizer:
/[^boca]*/i
eu estarei negando as letras b, o, c e a, e n negando a palavra boca…
Aham, o que você escreveu em Perl (o equivalente em Java é quase igual) é que você aceita qualquer coisa que não tenha uma das seguintes letras: b, o, c, a. Por acaso, se você usar a palavra boca, ela não vai bater, mas qualquer palavra que tenha uma das letras a, b, c, o, não vai bater também.
Chute:
/[^(boca)]*/i
Marcio Kuchma
[quote=thingol]http://www.javaranch.com/newsletter/Apr2003/RegexTutorial.htm
[/quote]
n consegui acha isso q eu preciso nesse tutorial
[quote=kuchma]Chute:
/[^(boca)]*/i
Marcio Kuchma[/quote]
ja tentei, n funciona… eh o mesmo q [^boca]
Na verdade eu até tentei usar (?<!X) (no seu caso seria “(?<!boca)” ) mas não consegui fazer funcionar. Releia o artigo que lhe mandei, e veja se é isso mesmo - deve ter mais alguma pegadinha que não entendi.
Na prática eu não tento fazer uma expressão regular que negue nela mesmo, mas eu normalmente inverto o resultado - por exemplo, “boca." pega tudo que começa com boca. Então eu uso ! matches ("boca.”) em vez de matches ("(?<!boca).*") (ou seja lá qual é a expressão regular que devo usar para negar a tal da string).
Isso eu faço quando uso grep - eu uso a opção -v, que inverte o resultado da expressão regular.
Eu li, um tempão atrás, no GUIA DE EXPRESSÕES REGULARES que negar uma string inteira é meio complicado…
Dá uma olhada lá que ele mostra uma solução…
[]´s
Tiago
Obrigado pela dica. Funcionou
import java.util.regex.*;
import java.util.*;
class LookBehind {
public static void main(String[] args) {
String[] test = {
"Boca Ratón",
"uma boca no caminho",
"bocca",
"qualquer coisa",
};
Pattern pat = Pattern.compile("(?!boca).*", Pattern.CASE_INSENSITIVE);
for (int i = 0; i < test.length; ++i) {
System .out .println ("<" + test[i] + "> : " + pat.matcher(test[i]).matches());
}
}
}
Resultado do teste.
C>chcp 1252
Active code page: 1252
C>\jdk1.5.0\bin\java -cp . LookBehind
<Boca Ratón> : false
<uma boca no caminho> : true
<bocca> : true
<qualquer coisa> : true
C>\j2sdk1.4.2_08\bin\java -cp . LookBehind
<Boca Ratón> : false
<uma boca no caminho> : true
<bocca> : true
<qualquer coisa> : true