Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [inne][PHP]Wyrażenia regularne, wyrażenia regularne
-bolon-
post
Post #1





Goście







Witam,

Potrzebuje pomocy przy ułożeniu wyrażenia regulanego, którego zadaniem bedzie:

np. z Ciągu
0{test}1{test}2{/test}3{test}4{/test}5{/test}6{test}7{/test}8

Wyciągnąć 1{test}2{/test}3{test}4{/test}5 i 7

czyli to co pomiędzy znacznikami test, w wypadku kiedy miedzy znacznikami nie występuja inne takie same znaczniki lub jęsli ostatni taki sam znacznik nie jest znacznikiem otwierającym dla jak najdłuższego dopasowania.

To co sam próbuje ułożyc jest raczej żałosne #\{(.*?)\}([^(\{/\1\}).*?(\{\/\1\})])\{\/\1\}#si

Z góry dzieki za pomoc!
Go to the top of the page
+Quote Post
bostaf
post
Post #2





Grupa: Zarejestrowani
Postów: 374
Pomógł: 79
Dołączył: 6.04.2010
Skąd: Ostrów Wielkopolski

Ostrzeżenie: (0%)
-----


Wyrażenia regularne służą do parsowania regularnych wzorców. Wzorce zagnieżdżone (np. takie z Twojego przykładu) nie są regularne, bo ilość zagnieżdżeń nie jest określona. Chyba każdy początkujący programista PHP staje w pewnym momencie przed "koniecznością" potraktowania kodu (X)HTML wyrażeniami regularnymi. Walczy przez jakiś czas i dowiaduje się, ze (X)HTMLa nie da się parsować wyrażeniami regularnymi. Twój problem, mimo że nie dotyczy HTMLa, jest taki sam.
Potrzebowałbyś innego parsera. Mógłbyś poczytać o analizatorach składni i być może znaleźć w ten sposób jakieś gotowe rozwiązanie dla swoich potrzeb.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 22:18