🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.php
6 messages
6 total messages Started by Jivanmukta Fri, 22 Feb 2019 19:02
regexp i preg_match_all
#232261
Author: Jivanmukta
Date: Fri, 22 Feb 2019 19:02
23 lines
1489 bytes
Mam błąd w wyrażeniu regularnym ale nie wiem co jest źle. Potrzebuję dla 
tekstu (kodu w PHP):

private $data, $invalid;

wydobyć identyfikatory tzn. napisy data i invalid.
Robię to tak:

preg_match_all("/(static)?\\s*(private|protected|public)\\s+(static)?\\s*(\\\$([A-Za-z0-9_]+),?\\s*)+\\s*[^\\(]/", 
'private $data, $invalid;', $matches, PREG_OFFSET_CAPTURE);
var_dump($matches[5]);

array(1) {
   [0] =>
   array(2) {
     [0] =>
     string(7) "invalid"
     [1] =>
     int(16)
   }
}

Nie rozumiem dlaczego w wynikach nie mam napisu data.
Re: regexp i preg_match_all
#232262
Author: Borys Pogoreło
Date: Mon, 25 Feb 2019 12:22
16 lines
1455 bytes
Dnia Fri, 22 Feb 2019 20:02:12 +0100, Jivanmukta napisał(a):

> Nie rozumiem dlaczego w wynikach nie mam napisu data.

Trafiłeś na ograniczenie wyrażeń regularnych dla powtarzalnych wzorów
będących częścią zapytania - większość implementacji zwraca tylko ostatnie
dopasowanie w tym przypadku.

Musisz to rozwiązać inaczej - np. najpierw sprawdzając dopasowaniem czy
masz do czynienia z prawidłową wartością, a później wyciągając nazwy
zmiennych prostym wyrażeniem typu /\$([A-Za-z0-9_]+)(?:,\s*)?/ (pamiętaj
tylko, że nie uwzględnia ono definicji zmiennej z przypisaną wartością).

-- 
Borys Pogoreło
borys(#)leszno,edu,pl
Re: regexp i preg_match_all
#232263
Author: Jivanmukta
Date: Tue, 26 Feb 2019 18:42
1 lines
983 bytes
Dzięki Borys, zrobiłem jak doradziłeś. Problem zamknięty.
Re: regexp i preg_match_all
#232264
Author: Jivanmukta
Date: Tue, 10 Sep 2019 18:24
6 lines
1198 bytes
Mam jeszcze jedno pytanie:

Potrzebuję dla stringu "           REGION_ID . ' ' . // mazowieckie" 
wydobyć stałą REGION_ID. Użyłem wyrażenia regularnego: 
[^\$]([A-Z_][A-Z0-9_]*) ale jest źle bo dostaję "EGION_ID". Jakim 
wyrażeniem wydobywać stałe?
Re: regexp i preg_match_all
#232265
Author: Jivanmukta
Date: Wed, 11 Sep 2019 09:21
11 lines
1440 bytes
W dniu 10.09.2019 o 20:24, Jivanmukta pisze:
> Mam jeszcze jedno pytanie:
> 
> Potrzebuję dla stringu "           REGION_ID . ' ' . // mazowieckie" 
> wydobyć stałą REGION_ID. Użyłem wyrażenia regularnego: 
> [^\$]([A-Z_][A-Z0-9_]*) ale jest źle bo dostaję "EGION_ID". Jakim 
> wyrażeniem wydobywać stałe?

Właściwie to powininem uwzględnić że nie może być nawias za stałą oraz 
małe litery.
[^\$]([A-Za-z_][A-Za-z0-9_]*)\s*[^\(]
Re: regexp i preg_match_all
#232266
Author: Jivanmukta
Date: Sun, 15 Sep 2019 17:01
14 lines
1257 bytes
Potrzebuję jeszcze napisać wyrażenie regularne do wydobywania wywołań 
funkcji ale tak, żeby nie pasowała deklaracja funkcji. Napisałem:

  [^a-z]\s*([a-z0-9_]+)\s*\(

ale mi dopasowuje do:

   function invoice(

a chciałbym tylko do:

   invoice(

Jak to napisać?
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads