Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyrażenia regularne
szajens
post
Post #1





Grupa: Zarejestrowani
Postów: 150
Pomógł: 4
Dołączył: 3.01.2010

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


Witam,
próbuje sobie przypomnieć jak to było z wyrażeniami regularnymi i nie rozumiem dlaczego przechwytuje mi w taki sposób.

Kod:
  1. $foo = 'aa.aa.aa.aa.aaa.a.b.b.bb.b.b';
  2. $result[1] = preg_match('/^([a]{2}[\.])*([a-z\.]*)$/', $foo, $result[0]);
  3. echo '<pre>';
  4. print_r($result);

wynik:
  1. (
  2. [0] => Array
  3. (
  4. [0] => aa.aa.aa.aa.aaa.a.b.b.bb.b.b
  5. [1] => aa.
  6. [2] => aaa.a.b.b.bb.b.b
  7. )
  8.  
  9. [1] => 1
  10. )


dlaczego muszę dodać nawiasy
kod:
  1. preg_match('/^(([a]{2}[\.])*)([a-z\.]*)$/', $foo, $result[0]);

do przechwytywania aby uzyskać efekt:
  1. (
  2. [0] => Array
  3. (
  4. [0] => aa.aa.aa.aa.aaa.a.b.b.bb.b.b
  5. [1] => aa.aa.aa.aa.
  6. [2] => aa.
  7. [3] => aaa.a.b.b.bb.b.b
  8. )
  9.  
  10. [1] => 1
  11. )


przecież mam 0 lub więcej razy ([a]{2}[\.])*
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
szajens
post
Post #2





Grupa: Zarejestrowani
Postów: 150
Pomógł: 4
Dołączył: 3.01.2010

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


chodzi mi raczej o zrozumienie tego.

mając ciąg znaków np: aa.aa.aa.aa.a.aaa.bbb.b.b.bbb.dergew.reerrr

chce oddzielić 2x 'a' z kropką od reszty.

i zastanawiam się dlaczego muszę użyć kolejnych nawiasów skoro ([a]{2}[\.])* powinno wyłapać 0 lub więcej razy a wyłapuje tylko pierwsze aa.

Ten post edytował szajens 4.09.2016, 11:15:20
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: 8.10.2025 - 05:21