Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> część wspólna regexp-ów
zimi
post
Post #1





Grupa: Zarejestrowani
Postów: 233
Pomógł: 9
Dołączył: 3.06.2007

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


no dobra... co wrażliwszych chyba powinienem prosić o to żeby usiedli przed przeczytaniem treści problemu

tak więc chciałbym aby mając 2 regexp-y w jakiś sensowny sposób podać przykładowy ciąg znaków który pasuję jednocześnie do obu lub generuje wyrażenie regularne które jest wynikiem "przecięcia" tych dwóch wyrażeń regularnych

wszystkie wzorce będą postaci: @^wzorzec$@ czyli wyrażenie regularne będzie obejmowało dany ciąg znaków zawsze od początku do końca...

może przykład
załóżmy że mamy wyrażenia: @^a{3,5}$@ i @^a{4,6}$@ nasza funkcja lub coś powinna zwracać 'aaaa', 'aaaaa' lub @^a{4,5}$@

oczywiście to tylko prosty przykład chciałbym aby to działało dla bardziej skomplikowanych wyrażeń regularnych

czy ktoś zna już jakiś skrypt, program cokolwiek... działające w ten sposób, tudzież ma pomysł jak się za to zabrać
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
zimi
post
Post #2





Grupa: Zarejestrowani
Postów: 233
Pomógł: 9
Dołączył: 3.06.2007

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


rozumiem Twoje kody i wiem jak działają, założenia mojego problemu spełniają tylko przy brute-force...
dziękuję za nakład kodów jednak są dla mnie raczej bezużyteczne
może inaczej: nie chce sprawdzić czy jakiś ciąg znaków spełnia oba wyrażenia regularne, chce wygenerować ciąg znaków który spełnia oba wyrażenia regularne na podstawie tych wyrażeń regularnych, ew. generuje wyrażenie regularne które jest ich przecięciem

może powiem co chce osiągnąć... załóżmy że mam zbiór wyrażeń regularnych i chciałbym aby jeśli jedno wyrażenie regularne dopasuję jakiś ciąg to drugie już go nie może dopasować, jednak te ciągi znaków nie są z góry określone, więc mając jakiś zbiór wyrażeń regularnych puszczę ten algorytm na nich aby się dowiedzieć że jakieś 2 wyrażenia mają część wspólną i żeby poprawić jedno z nich tak aby już na siebie nie zachodziły

czyli załóżmy mamy to wspomniane @^a{3,5}$@, @^a{4,6}$@ i nie chcemy sprawdzić czy z góry określone ciągi pasują do obu wyrażeń naraz, ale chcemy np. wygenerować wyrażenie regularne które jest zgodne z jednym i drugim wyrażeniem czyli nasze @^a{4,5}$@

nie wiem jak jeszcze mogę to wytłumaczyć...

załóżmy mamy liczby od 1 do 100, są to jakieś elementy tak jak Twoje ciągi znaków które wykorzystałeś: 'a', 'aaa', 'aaaaa', etc.
zbiór A reprezentuje liczby podzielne przez 5: 5, 10, 15, etc
zbiór B reprezentuje liczby podzielne przez 3: 3, 6, 9, etc.

nasze zbiory A i B to odpowiednik wyrażeń regularnych

na podstawie tych zbiorów, a właściwie założeń jakie spełniają elementy tych zbiorów tworzymy założenia zbioru C który będzie przecięciem zbioru A i B, jako uproszczenie możemy generować jakiś element ze zbioru C jednak nadal na podstawie założeń zbiorów A i B

a co Ty robisz w swoim kodzie... trzymając się tego przykładu:
bierzesz jakieś elementy które należą do całego uniwersum i mówisz tak ten pasuję do zbioru A, ale nie do zbioru B, ten pasuję do B ale nie do A, ten nie pasuję do żadnego, a ten do obu

bierzesz: "1: nie pasuję, 2: nie pasuję, 3 pasuję do B, 5 pasuję do A, 15 pasuję do A i B"
a ja chce...: "skoro element ma być podzielny przez 3 i ma być podzielny przez 5 to musi podzielny przez 15" w ten sposób tworzę założenia zbioru C, a więc wyrażenie regularne, które rozumiem jako przecięcie wyrażeń A i B

PS. pewnie wiele razy się powtórzyłem... chciałem to przedstawić na kilka sposobów aby można było zrozumieć moją ideę...
Go to the top of the page
+Quote Post

Posty w temacie


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: 5.10.2025 - 13:07