Expressão regular

9 respostas
ATEN

tenho o seguinte html

<div class="titulo">
           <a href='objetos/968249'>
                       Fisica
             </a>
</div>

Gostaria de tomar somente a palavra fisica de dentro desse código com uma E.R

tentei algumas opções mas não consegui nada.

Alguem pode dar alguma luz.

desde já obrigado.

9 Respostas

Marlon_Meneses

http://ocpsoft.org/prettyfaces/

Hebert_Coelho

ATEN:
tenho o seguinte html

<div class="titulo">
           <a href='objetos/968249'>
                       Fisica
             </a>
</div>

Gostaria de tomar somente a palavra fisica de dentro desse código com uma E.R

tentei algumas opções mas não consegui nada.

Alguem pode dar alguma luz.

desde já obrigado.

Não entendi… qual a utilidade de uma expressão regular aí? O.o

Marlon_Meneses

Hebert Coelho:
ATEN:
tenho o seguinte html

<div class="titulo">
           <a href='objetos/968249'>
                       Fisica
             </a>
</div>

Gostaria de tomar somente a palavra fisica de dentro desse código com uma E.R

tentei algumas opções mas não consegui nada.

Alguem pode dar alguma luz.

desde já obrigado.

Não entendi… qual a utilidade de uma expressão regular aí? O.o

ele se expressou mal
ele quis dizer algo como urlrewrite

R

Tente esta:

<(.|\n)*?>

ATEN

Legal, ainda não conhecia o prettyfaces, certamente usarei em outra ocasião. valeu Marlon

Mas a minha situação é aseguinte. Eu acesso uma url e tomo o html de uma página e há vários trechos que tem este padrão

<div class="titulo">
   <a href='objetos/987549'>
      Testes físicos de educação física no ensino fundamental
  </a>
</div>

// mais algum html

<div class="titulo">
        <a href='objetos/957922'>
              O que é Física?
        </a>
 </div>

Logo queria achar uma expressão regular para retirar a frase de dentro da tab FRASE

paulohms

ATEN, tente usar essa expressão:

<div\s*class="titulo">\s*<a\s*href=[^>]+>\s*(Fisica)\s*<

Espero ter ajudado, vlw.

gomesrod
paulohms:
ATEN, tente usar essa expressão:
<div\s*class="titulo">\s*<a\s*href=[^>]+>\s*(Fisica)\s*<

Espero ter ajudado, vlw.


Essa expressão faz metade do trabalho, que é isolar as tags que contém os items. Vou continuar dela para mostrar como chegar na outra metade, que é extrair a frase de dentro da tag.
Primeiro, só tem um pequeno engano na sua expressão, que é procurar pelo título "Física". Deveria casar com qualquer conteúdo da tag. Essa parte ok, só trocar Física por [^<]* (qualquer sequência que não seja o fechamento da tag)

Agora, continuando: Essas aspas duplas e barras à esquerda ( \ ) precisam de uma escapada básica na hora de escrever como String em java.
Pattern separaTagsA = Pattern.compile("<div\\s*class=\"titulo\">\\s*<a\\s*href=[^>]+>\\s*([^<]*?)\\s*<");
Aproveitei para fazer uma coisa importante: colocar o conteúdo da tag entre parênteses. ]+>\\s*[size=18]([/size][^<]*?[size=18])[/size]\\s*<

Parece um detalhe sem importância, porque a expressão casa do mesmo jeito... mas esses parênteses são importantes para usar um recurso poderoso chamado "backreference".

Já temos uma expressão capaz de isolar todas essas com as tags
Pattern separaTagsA = Pattern.compile("<div\\s*class=\"titulo\">\\s*<a\\s*href=[^>]+>\\s*([^<]*?)\\s*<");
Matcher matcher = separaTagsA.matcher(conteudo);
		
while(matcher.find()) {
	String tagInteira = matcher.group();
	System.out.println("Tag Inteira: " + tagInteira);
}
Agora a parte legal: vamos usar a backreference para extrair da tag apenas o miolo do texto, o conteúdo da tag
while(matcher.find()) {
	String tagInteira = matcher.group();
	System.out.println("Tag Inteira: " + tagInteira);

	String conteudoTag = separaTagsA.matcher(tagInteira).replaceAll("$1");
	System.out.println("Apenas conteúdo: " + conteudoTag);
}

E pronto... substituimos a tag inteira pela parte que estava dentro dos parenteses na expressao. O que casou dentro dos parênteses pode ser representado no replace como $1. Se tivesse mais parenteses na expressão, tambem poderiamos referenciar seu conteudo como $2, $3, etc. Conhecendo esse recurso as expressões regulares se tornam ainda mais úteis!

paulohms

gomesrod, é isso ai cara,

eu passei a expressão regular testada no terminal do linux, pois trabalho com isso, fazendo coletas na internet… mais nunca havia usado em java, mais vejo que não muda muita coisa.

Expressões regulares possibilita fazer muitas coisas, é muito massa.

ATEN

paulohms e gomesrod

MUITO OBRIGADO, pela atenção e pela aula, vcs mandam muito.

[]s

Criado 21 de janeiro de 2013
Ultima resposta 21 de jan. de 2013
Respostas 9
Participantes 6