Wyr. regularne do wyciągania tagów

0

Witam,
jest tekst typu:

<<-----------------S T A R T------------------------>>

dowolny tekst **[item]**dowolny tekst **<<tag>>dowolny tekst 1<</tag>>**dowolny tekst [/item]
dowolny tekst **<<tag>>dowolny tekst 2<</tag>>**dowolny tekst
**[item]**dowolny tekst <<tag>>dowolny tekst 3<</tag>> dowolny tekst [/item]
dowolny tekst **<<tag>>dowolny tekst 4<</tag>>**dowolny tekst

<<-----------------S T O P-------------------------->>

i teraz jest pytanie:
jak napisać wyrażenie regularne, które wybierze fragmenty zawarte między <<tag>> a <</tag>>, ALE pod warunkiem, że NIE są zawarte pomiędzy [item] a [/item].

Dla powyższego przykładu:
#- wybrane powinny być <<tag>>dowolny tekst 2<</tag>> oraz <<tag>>dowolny tekst 4<</tag>>
#- NIE wybrane (bo wewnątrz [item]...[/item]) <<tag>>dowolny tekst 1<</tag>> oraz <<tag>>dowolny tekst 3<</tag>>

Łatwo jest wyznaczyć tekst pomiędzy [item]...[/item] wyrażeniem \[item\].*?<<tag>>.*?<</tag>>.*?\[/item\], ale jak zanegować takie wyrażenie ? - to rozwiązało by sprawę.

I jeszcze założenia:
#- chcę to zrobić wyrażeniem regularnym
#- mogę to zrobić innymi metodami (pętla przeglądająca tagi), ale nie chcę :)

0

Hej.
Miliony lat tu nie pisałem, wybacz upojenie alkoholem :)

Jeśli [item] i <<tag>> jest stałym "item"-em i <<tag>>-iem to kombinuj wyrażenie regularne nie powinno być tak skomplikowane, jeśli nie są to stałe, to bez sensu opierać się na wyrażeniach reuglarnych.
Troche nie rozumiem, Twojego zboczenia co do wyrażeń regularnych :) Przejdź na języki bezkontekstowe - stwórz drzewko - a wszystko samo wyjdzie.

Opier*** mnie za brak dalszej wypowiedzi, ale tak rzadko się ostatnio - od jakiś 10 lat - wypowiadam, że proszę wybacz :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1