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
Kicok
post
Post #2





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


No jasne że się da:
  1. <?php
  2.  
  3. $text[0] = 'a';
  4. $text[1] = 'aaa';
  5. $text[2] = 'aaaa';
  6. $text[3] = 'aaaaa';
  7. $text[4] = 'aaaaaa';
  8. $text[5] = 'aaaaaaaa';
  9.  
  10. $reg1 = '^a{3,5}$';
  11. $reg2 = '^a{4,6}$';
  12.  
  13.  
  14. for( $i = 0; $i < 6; ++$i )
  15. {
  16. preg_match( '@(?(?=' . $reg1 . ')(?:' . $reg2 . ')|)@', $text[$i], $matches );
  17. echo '<pre>' . print_r( $matches, true ) . '</pre>';
  18. }
  19.  
  20. ?>



Wyrażenie zawsze coś dopasuje (choćby i pusty ciąg), więc musisz sobie jeszcze sprawdzać, czy tablica $matches jest pusta.
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 - 00:47