Duvida com regex

4 respostas
A

Bom dia,

estou tentando fazer um regez como se fosse um like do sql.

tipo:

eu escrevo uma String e ele me retorna todo objeto que tenha essa String no meio

se alguem puder me ajudar

Muito Obrigado.

4 Respostas

A

o codigo que estou tentando fazer:

public HashMap filtrar() throws Exception {
        // Recuperando parâmetros vindo do HTML/JQuery e montando o VO
        String pNmeCient = req.getParameter("pNme");

        // Executando transação de banco com o auxílio do DAO
     
        DAONomeCientifico dao = new DAONomeCientifico();

        List<NomeCientificoVO> lista = dao.retornarTodos2();

        Pattern padrao = Pattern.compile(pNmeCient);


        // Montar saida HTML
        ListRadio lr = new ListRadio("pRetLV");
        for (Iterator<NomeCientificoVO> it = lista.iterator(); it.hasNext();) {
            NomeCientificoVO vo = it.next();

            Matcher pesquisa = padrao.matcher(vo.getTaxPlan());// o metodo gettaxplan retorna uma string
            
            if(pesquisa.matches()){
            Option op = new Option(vo.getIdt(), vo.getTaxPlan());
            lr.addOption(op);
            }
        }

        // Passando a parte dinâmica de conteúdo para as TAGs ({}) no HMTL mapeado
        dados.put("LISTA", lr.getHTML());
        return dados;
    }
L

Olá, tem um função que se chama regionMatches(se a regiao da string bate com a palavra que voce procura), porem éla retorna somente um boolean(se tem ou não a palavra que voce esta procurando na string que ele está verificando).

public class Teste(){

    private static boolean verificarString(String frase){
        boolean flag = false;

        for(int i = 0;i < frase.leght();i++){
            //onde o x é o indice inicial, ele comessa a comparar a frase no indice 0 até o tamanho da String "bosta", que tem tamanho 5
            //ou seja ele vai do indice 0 a 4 comparando caracter por caracter, depois ele vai do indice 1 ao 5 e assim sucessivamente
            //até acabar a frase. Se houver alguma região que bateu com a palavra ela deve retornar true;
            //P.S.: regionMaches() diferencia maiusculas de minusculas !
             if(frase.regionMaches(x,"bosta",0,5)){
                  flag = true;
             }
        }
        return flag;
    }

    public static void main(String args[]){
        Teste t = new Teste();
        if(t.verificarString("Esse programa so da bosta")){
             System.out.println("A frase contem bosta!");
        }


        if(t.verificarString("Esse programa so da Bosta")){
             System.out.println("A frase não contem bosta!");
        }


        if(t.verificarString("Esse programa so da certo")){
             System.out.println("A frase não contem bosta!");
        }

    }
}
A

uuuuOwwwwwww

deu certo!

muito obrigado

A

Pode utilizar esta expressão regular .*TEXTO.*

Segue um exemplo

import java.util.*;
import java.util.regex.Pattern;

public class Principal {

	public static void main(String[] args) throws Exception {

		List<String> lista = new ArrayList<String>();
		
		lista.add("valor 1");
		lista.add("texto");
		lista.add("informacao com um valor qualquer");
		lista.add("algum dado");
		lista.add("informação");
		
		Pattern pattern = Pattern.compile(".*valor.*");
		
		for (String str: lista) {
			if (pattern.matcher(str).find())
				System.out.println(str);
		}
	}
}

Acredito que isto te resolve...
Att

Criado 15 de fevereiro de 2011
Ultima resposta 15 de fev. de 2011
Respostas 4
Participantes 3