Regex[RESOLVIDO]

10 respostas
evertonsilvagomesjav
package com.exercicio.certificacao.io.serialização.date;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class TesteRegex {

   	static void testeRegex(String nome){
		
		Pattern pattern = Pattern.compile("er"); //
		Matcher matcher = pattern.matcher(nome);
		
		while(matcher.find()){
			
			System.out.println("Posição inicial: " 
					           +matcher.start() +"\n"
					           +"Caracteres procurads: "
					           +matcher.group());
			
		}
	}
	
	public static void main(String[] args) {
		
		String nome = "Everton";
		
		testeRegex(nome);
				
	}
	
	
	
}

Bom dia a todos, galera é o seguinte o que acontece em cada linha ali eu entendi perfeitamente, eu quero saber se o que estou pensando procede ou não, olha só:

Na minha cabeça ta o seguinte, que de alguma forma é passado para o método find() o contéudo que ele deve encontrar ou seja, de alguma forma realmente o métod find() recebe o que está em matcher() ?

10 Respostas

E

Acho que você tem um problema com orientação a objetos - está pensando em Java como se fosse Fortran ou alguma outra linguagem antiga, estruturada. Para simplificar, vou explicar as coisas de uma outra maneira.

Você viu que o método “find” da classe Matcher não recebe parâmetros (ok) mas na verdade todos os métodos de uma classe que não são estáticos (o que é o caso do método “find”) recebem um parâmetro “escondido”, que é o tal do “this”. (Nesse caso em particular, “this” é a mesma coisa que a variável “matcher”).
Esse parâmetro “escondido”, que é o objeto sobre o qual o método opera, pode conter variáveis de instância que são as usadas pelo método “find” para trabalhar.
E é por isso que você não precisa passar mais parâmetros para o “find”.

evertonsilvagomesjav

entaglement, eu sei que o método find() opera sobre o objeto matcher() pois o mesmo está invocando, ah duvida seria como find() faz essa busca, maas nao sei se entendi perfeitamente o que vc quis dizer, que ele usa variaveis de instancia?

B

Usa sim. Basta você olhar o fonte do java.util.regex.Pattern e java.util.regex.Matcher.

evertonsilvagomesjav

bezier como faço pra olhar o cod font das classes dentro do eclipse?

B

No seu JDK deve haver um arquivo src.zip. Abra esse arquivo .zip e olhe os arquivos .java que existem dentro dele.

evertonsilvagomesjav

bezier vc abre os arquivos .java com o que? To tentando abrir com eclipse nao ta dando.

B

Um arquivo .zip pode ser aberto com qualquer coisa que abra arquivos .zip, tal como o WinZip, o WinRAR ou algum outro programa que abra arquivos .zip. Ele também pode ser aberto com o Windows Explorer (“Compressed Folder”).

Quanto ao Eclipse: acho que é possível você associar esse arquivo .zip (sources) à sua instalação do JDK. É questão de procurar dentro do Eclipse.

vi-gb

Acho que a sua duvida cabe a mesma resposta do seu topico sobre DateFormat.

Voce criou uma instancia do Pattern passando o regex, e quando o pattern criou uma instancia do macher ele criou ja com o regex que voce passou pois ele havia guardado este valor em um atributo, sendo assim quando voce chama o find, a instancia macher ja possui o regex em um dos seus atributos.

evertonsilvagomesjav

vi-gb obrigado, é falta de conhecer mesmo as classes pra saber o funcionamento, se ta usando variaveis de instancia ou por exemplo um método chama outro método e por ai vai…mas eu tava dando uma olhada no método matcher() ele realmente chama o compile().

quanto aos arquivos .java eu posso abrir-los como?

evertonsilvagomesjav

opa pde deixar importei aki ja vlw!!

Criado 8 de dezembro de 2009
Ultima resposta 9 de dez. de 2009
Respostas 10
Participantes 4