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ę :)