| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 04/03/2008 19:06:44
|
felixcomputer
JavaTeenager
![[Avatar]](/images/avatar/6dfc35c47756e962ef055d1049f1f8ec.jpg)
Membro desde: 07/06/2006 11:12:19
Mensagens: 171
Localização: Belém - Pa
Offline
|
Galera, to com um problemão:
Preciso reconhecer tudo o que existe dentro de uma tag, no caso:
Isso não é problema, funciona legal, o problema é que existe uma tag, vou chamá-la de falsa
que não termina com </UML:Class> e não deve ser capturada ...
O problema é que já tentei de tudo para capturar apenas a primeira tag, no caso a verdadeira, mas ele sempre pega as duas...
Me deparei com a seguinte situação: Ele captura tudo isso ae...
A falsa está dentro de uma tag que a verdadeira não esta, no caso a tag <UML:Namespace.ownedElement>
Entretanto, ele captura tudo entre a <tagfalsa> e a </tagverdadeira>
A minha regex para esse problema foi a seguinte, o eu tento negar a expressão namespace atraves do (?!):
Alguém pode me ajudar?
Aqui está o XML para teste:
A primeira tag class é a tag falsa e a segunda é a verdadeira
P.s: Não posso fazer parser com o DOM
|
Samuel Félix
O temor do Senhor é o principio da sabedoria!
http://sfelixjr.googlepages.com |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 04/03/2008 20:54:44
|
peczenyj
Moderador
![[Avatar]](/images/avatar/299dc35e747eb77177d9cea10a802da2.jpg)
Membro desde: 26/03/2006 23:25:37
Mensagens: 3191
Localização: Rio de Janeiro
Offline
|
Vou dar um exemplo com sed
Ok, vc vai dizer "q diabos é isso".
Bom, a expressão regular que vc está procurando é demasiada complexa.
O que eu fiz:
-Removi do arquivo os trechos que tem o código indesejado (com o comando d do sed)
-Depois eu procurei a tag esperada (e imprimi com o comando p do sed)
Tenho certeza que o Perl suporta um tipo de expressão que nega uma string inteira (o padrão é negar um conjunto de caracteres [^lista] ou inverter a lógica do match se vc esta fazendo uma busca).
Minha sugestão: remova as tags indesejadas e depois procure o que vc deseja
This message was edited 1 time. Last update was at 04/03/2008 20:56:48
|
http://pacman.blog.br
'Não importa quanto alguém se dedique à tarefa. Ninguém consegue fazer a água da cascata cair para cima.' |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/03/2008 08:44:09
|
felixcomputer
JavaTeenager
![[Avatar]](/images/avatar/6dfc35c47756e962ef055d1049f1f8ec.jpg)
Membro desde: 07/06/2006 11:12:19
Mensagens: 171
Localização: Belém - Pa
Offline
|
Olá peczenyj,
primeiramente, obrigado pela sua ajuda, entretanto, eu não tenho essa liberdade toda(remover o que é desnecessário) acerca o XML,
pq trata-se de um plugin do eclipse que está sendo extendido, e devido ao fato de eu criar a expressão que o plugin irá reconhecer, não posso excluir nada, ou usar replaceAll por exemplo, nem tampouco usar mais de uma expressão, ou usar o linux com o sed...
é preciso uma expressão só que pegue tudo de uma só vez... e realmente... é demasiada complexa...
Mas obrigado mesmo assim...
Alguém conseguiria construir essa expressão?
Obrigado a todos
|
Samuel Félix
O temor do Senhor é o principio da sabedoria!
http://sfelixjr.googlepages.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/03/2008 09:59:17
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Em Perl e Java você usaria "(?!". Para mais detalhes, veja o site do sr. Aurélio:
http://www.aurelio.net/er/
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/03/2008 10:01:25
|
felixcomputer
JavaTeenager
![[Avatar]](/images/avatar/6dfc35c47756e962ef055d1049f1f8ec.jpg)
Membro desde: 07/06/2006 11:12:19
Mensagens: 171
Localização: Belém - Pa
Offline
|
Sim sim... foi de la que eu vi isso (?! e utilizei na expressão que está no primeiro topico desse forum...
mas num consegui fazer funcionar... =(
|
Samuel Félix
O temor do Senhor é o principio da sabedoria!
http://sfelixjr.googlepages.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/03/2008 10:09:50
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Desculpe, mas eu falei "(?!", não "(?si", que faz o seguinte: s = "DOTALL" (ou seja, as quebras de linhas são capturadas por ".", e i = "CASE_INSENSITIVE". )
Vou dar um exemplo do uso de "(?!" (que tem um nome esotérico na documentação do Java - "(?!X) X, via zero-width negative lookahead".
Rode o exemplo abaixo.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/03/2008 10:12:08
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Aham, o exemplo abaixo é um pouco mais fácil de compreender. Eu quero que a expressão regular bata com "< img src= alguma coisa", mas não com as "< img src = "/WBCM". Eu postei este exemplo há algum tempo atrás.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/03/2008 10:30:10
|
felixcomputer
JavaTeenager
![[Avatar]](/images/avatar/6dfc35c47756e962ef055d1049f1f8ec.jpg)
Membro desde: 07/06/2006 11:12:19
Mensagens: 171
Localização: Belém - Pa
Offline
|
Ola thingol, tenho certeza que vc falou (?!, olha como tava a expressão no primeiro topico:
<UML[:]Class xmi.id = (?!<UML[:]Namespace[.]ownedElement(?:.*?)/> (?si)(.*?)</UML[:]Class>
Vou dar uma olhada no que vc escreveu..
obrigado
This message was edited 1 time. Last update was at 05/03/2008 10:34:10
|
Samuel Félix
O temor do Senhor é o principio da sabedoria!
http://sfelixjr.googlepages.com |
|
|
 |
|
|