Wyra?żenia regularne

0

Mam problem, nie wiem jak napisać wyrażenie regularne takie, aby "zgadzało" się ze wszystkimi znakami, lecz różnymi od np. [/koniec].

Próbowałem już róznych metod, ale nie mogę <ort>znaleŹć </ort>rozwiazania, pomocy.

Przed podaniem czego kolwiek proszę sprawdzić to!

0

a nie możesz odwrócić warunku? Sprawdź, czy [/koniec] się zgadza, jeśli tak, to znaczy, że NIE jest różne i już.
of coz sprawdzenie, czy [/koniec] istnieje jest dość proste -
[code]"/.[/koniec]./"[/code]
tylko nie pamiętam, czy znaczki [] są znakami specjalnymi i trzeba je cytować.

0

Głowny problem polega na tym iż np. [/koniec] może występować parę razy, przykładowy kod.

[code][koniec]jakiś text[/koniec]
inna linijka
[koniec]jakiś text[/koniec][/code]

I jeśli tego jakoś nie zastąpie, on po prostu idzie na ort! i całość traktuje jako: [koniec]......[/koniec], a tam jest w środku normalny text.

Używam funkcji preg_replace();

PS. znaczniki [ trzeba cytować.
PS2. znaczniki [ są jedne z ważniejszych w wyrażeniach regularnych ;)

0

Nie do końca rozumiem Twoje pytanie. Wg mnie chodzi Ci o wyciągnięcie tekstu znajdującego się między tymi tagami - popraw mnie, jak się mylę. Ale jeśli nie, to napisałbym tak:
[code]<font color="darkblue">"[koniec]([^[]*)[/koniec]"</span>[/code]
i przy zamianie użył <font color="darkblue">\ 1</span> (bez spacji) - jest to równe "jakiś tekst" z powyższego przykładu.

0

Kombinowałem z tymi wyrażeniami wraz ze specyfikacją i nie wiem czy dobrze zrozumiałem, ale ważne, że chodzi :)

Mój wynik:
"[koniec]([[]+?)[/koniec]"

dla przypomnienia [] oznacza zbiór wszystkich znaków do wyświetlenia. Wydaje mi sie, ze wszystko działa za sprawą tego znaku -> ? :)

0

[:print:]+?
Czyli "znaki drukowalne" 1 lub więcej razy i to wszystko 0 lub 1 raz?? Coś tu nie ten teges. Nie wydaje mi się, aby to było sensowne, ale mogę się mylić - wszak wyrażeń "uczę" się od 2 m-cy. Trza zapytać Vogela lub piechnata :)

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