Galera, to com um problemão:
Preciso reconhecer tudo o que existe dentro de uma tag, no caso:
<UML:Class(?si)(.*?)</UML:Class>
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 …
<UML:Class xmi.id = '127-0-1-1-76664874:1185760bbbc:-8000:0000000000000816'
name = 'String' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
isAbstract = 'false' isActive = 'false'/>
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
<UML:Namespace.ownedElement>
<tagfalsa/>
</UML:Namespace.ownedElement>
<tagverdadeira>
</tagverdadeira>
Entretanto, ele captura tudo entre a e a
A minha regex para esse problema foi a seguinte, o eu tento negar a expressão namespace atraves do (?!):
<UML[:]Class xmi.id = (?!<UML[:]Namespace[.]ownedElement(?:.*?)/>)(?si)(.*?)</UML[:]Class>
Alguém pode me ajudar?
Aqui está o XML para teste:
<UML:Package xmi.id = '127-0-1-1--52a32396:1186228c68b:-8000:0000000000000822'
name = 'util' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
isAbstract = 'false'>
<UML:Namespace.ownedElement>
<UML:Interface xmi.id = '127-0-1-1--52a32396:1186228c68b:-8000:0000000000000823'
name = 'List' />
<UML:Class
...
name = 'Time' />
</UML:Namespace.ownedElement>
</UML:Package>
</UML:Namespace.ownedElement>
</UML:Package>
<UML:Class
...
name = 'classe3' isActive = 'false'>
CONTEUDO QUE QUERO PEGAR
</UML:Class>
A primeira tag class é a tag falsa e a segunda é a verdadeira
P.s: Não posso fazer parser com o DOM