Expressao regular

5 respostas
Guilherme_Silveira

Gente, to precisando de uma expressao regular e nao consigo me virar:

[link http://www.guj.com.br] tem que virar <a href=“http://www.guj.com.br”>

detalhes:
a url nao pode conter aspas, &0025; (por exemplo esse eh o codigo das aspas) e pronto.
como fazer isso?

o melhor q fiz foi:

&#91;link &#40;&#91;.&#93;+?&#41;&#93;

para:

&lt;a href="$1"&gt;

dicas por favor?

gui

5 Respostas

Paulo_Silveira
&#91;link &#40;.+?&#41;&#93;

usa isso que mandei.

Guilherme_Silveira

o q eu mandei tinha umas barras invertidas:

[link (.+?)]

isso aqui vai funcionar do jeito normal, mas nao vai brecar nos codigos &0025; e ". eu preciso que se possuir esses codigos ele nao faca a transformacao. e ai?

Rafael_Steil

Eu consegui dessa forma:

\&#91;link http&#58;\/\/&#40;&#91;\w|\.&#93;+&#41;+\&#93;

Rafael

Guilherme_Silveira

rafael, o codigo q vc passou:

System.out.println&#40;&quot;&#91;link http&#58;//www.guj.com.br&#93;&quot;.replaceAll&#40;&quot;\\&#91;link http&#58;\\/\\/&#40;&#91;\\w|\\.&#93;+&#41;+\\&#93;&quot;,&quot;&lt;a href=\&quot;$1\&quot;&gt;&quot;&#41;&#41;;
retornou:
&lt;a href=&quot;http&#58;//www.guj.com.br&quot;&gt;
e o problema aqui:
System.out.println&#40;&quot;&#91;link http&#58;//www.guj.com.br?a=b&#93;&quot;.replaceAll&#40;&quot;\\&#91;link http&#58;\\/\\/&#40;&#91;\\w|\\.&#93;+&#41;+\\&#93;&quot;,&quot;&lt;a href=\&quot;$1\&quot;&gt;&quot;&#41;&#41;;
retornou: [code][link http://www.guj.com.br?a=b][code] pois o \w soh pega de a a z, A a Z e 0 a 9. nao funciona.

esse codigo elimina a possibilidade do href ser um mailto ou ftp, por exemplo, nao posso deixar o http entao tenho q tirar possiblitar tambem o /!!!

sem contar q devo liberar para todos os caracteres padrao de uma request get, o q nao pode me fechar soh aos a a Z, A a Z e 0 a 9. e nao to nem um poco afim de descobrir quais sao todos e por na expressao. entao o certo eh aceitar todos exceto os q nao devem ser aceitados (aspas duplas, open tag, fecha tag e os mesmos tres em seus codigos &)

isso que preciso, seria mais o menos o seu codigo mas em vez de \w|. algo do tipo:
^[&0025;|"|>|<|&0026;|&0027;]

dicas?

Guilherme_Silveira

[link ([^"|<|>|[\u00260022]|[\u0026003c]|[\u0026003e]|[\u00260022]]+?)]

achei o pattern perfeito :slight_smile:
um pouco mais complicado q as ideias iniciais neh?
ele elimina todos os links q possuirem aspas, inicia tag fecha tag e ampersand codificado
o codig oesta como a expressao eh, e nao como ela deve ser usada em java (antes de aspa dupla e barra invertida deve inserir uma barra invertida)
se o cara tentar codificar tambem as aspas e coisa e tal tambem nao vai funcionar

Criado 14 de novembro de 2002
Ultima resposta 15 de nov. de 2002
Respostas 5
Participantes 3