![]() |
![]() ![]() |
![]() |
-bolon- |
![]()
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! |
|
|
![]()
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. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 22:18 |