[PHP/RegExp] "Łapanie" od środka i od końca

0

Witam, czy jest możliwość aby jedno wyrażenie wyłapało mi wszystko w znacznikach, załóżmy kod xml:

< a>
< b>text< /b>
< /a>
< c>ce< /c>

zakładając że wszystko jest zamykane i jest to robione w dobrej kolejności, coś w stylu

/<(.?)>(.?)</\1>/

tylko działające jakby od środka bo to nie chyta już < b>text< /b> wyrzucone z szukania po znalezieniu < a />

drugie pytanie, czy jest możliwość aby wyrażenie łapało od końca a nie od początku, efekt taki mogę uzyskać odwracając string i odpowiednio wyrażenia a potem odwracając je z powrotem ale nie ma może na to jakiejś flagi czy czegoś (w php) ?

0

Pierwszego pytania nie rozumiem.

Co do drugiego, to mając ciąg: "1cos2" i Twoje wyrazenie chciałbyś dostać tylko 2 ?
Możesz zrobić preg_match_all i skorzystać z ostatniego pola złapanego do tablicy.

0

pierwsze pytanie:
wyrażenie

/<(.?)>(.?)</\1>/

z

<a><b>text</b></a><c>ce</c>

łapie

<a><b>text</b></a><c>ce</c>
<a><b>text</b></a><c>ce</c>

a chciałbym (chociaż wiem że takie rzeczy to chyba tylko w erze):

<a><b>text</b></a><c>ce</c>
<a><b>text</b></a><c>ce</c>
<a><b>text</b></a><c>ce</c>

mógłbym użyć zagnieżdżenia czyli rekurencyjnie dla wyników odpalać znowu wyrażenie ale wydaje mi się że to za długo trwa, czy w ogóle jest sens tutaj używania wyrażeń regularnych ?
// dop: a nie - to jest jednak do przebolenia bo wcześniej mi się to wykonywało kilka sekund nawet ale teraz okazało się że miałem mały błąd w skrypcie i wykonuje się on 0.032 s - to jeszcze w normie

drugie pytanie:
wyrażenie (przykładowe)

/a(.*?)a/

z

a 1 a 2 a 3 a 4 a

łapie

a 1 a 2 a 3 a 4 a
a 1 a 2 a 3 a 4 a

a chciałbym:

a 1 a 2 a 3 a 4 a
a 1 a 2 a 3 a 4 a

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