Regex quantificadores gananciosos

4 respostas
J

gente … o codigo abaixo imprime

0
1
2
4
5

Pattern p = Pattern.compile("\\d*");
		Matcher m = p.matcher("kj23k");	
		while(m.find()){
		
			
			System.out.println(m.start());
		
		}

porque está me voltanto até o numero 5 (teoricamente posição 6)? posições sendo q a strring soh tem 5 posições?

valew

4 Respostas

rodrigues.danilo

Qual sua intenção com essa expressão? Ao incluir o “*” você está dizendo que pode encontrar 0 ou mais vezes, logo ele encontra no fim da string tbm (acho que é isso). Se vc fizer “\d+”, talvez tenha o efeito que vc deseja.

Abs!
Danilo

J

obrigado pela a resposta Danilo

esse é o problema … to estudando para certificação … eu não preciso de resultado nenhum . e sim saber como funciona esse quantificador e pq ele dahe sse tipo de resultado …

mas o negocio de ele retornar o fim da string pode estar correto … alguem ai tem certeza?

VALEW

gomesrod

Está me parecendo que é isso mesmo que o ornitorrinco falou: na posição 5 (após o último “k”) começa uma sequência de 0 dígitos. (que coisa, não? :slight_smile: ). Como você pediu “0 ou mais” ele acaba valendo…

Obs: Também estou prestes a fazer o exame e acabei de aprender mais uma.

J

opa … forum serve pra issu mesmo hehehe todu mundo aprende com as picuinhas da dificil gramática do idioma javanês rsrsrs

falow

Criado 18 de agosto de 2008
Ultima resposta 18 de ago. de 2008
Respostas 4
Participantes 3