Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/02/2011, 12:32
tonysanrusso
 
Fecha de Ingreso: mayo-2010
Mensajes: 84
Antigüedad: 14 años
Puntos: 6
Duda con metacaracter * avaricia - php perl

Hola a todos, estoy estudiando por mi cuenta y me he clavado en un punto, no logro darme cuenta.

data.txt:
Mama Bear 702
Steve Blenheim 100
Betty Boop 200
Igor Chevsky 313
Norma Cord 400
Jon DeLoach 500
Karen Evich 600
BB Kingson 803


ej1:
Código PHP:
<pre>
<?php

  $fh
=fopen("data.txt""r");
  while( ! 
feof($fh)){
    
$text fgets($fh);
    if(
preg_match("/B[a-z]*/",$text)){
       echo 
"$text";
    }
  }

?>
-Resultado ej1:
Mama Bear 702
Steve Blenheim 100
Betty Boop 200
BB Kingson 803


ej2:
Código PHP:
<pre>
<?php

  $fh
=fopen("data.txt""r");
  while( ! 
feof($fh)){
    
$text fgets($fh);
    if(
preg_match("/^[A-Z][a-z]*\s[A-Z][a-z]*\s/",$text)){
        echo 
"$text";
    }
  }

?>
-Resultado ej2:
Mama Bear 702
Steve Blenheim 100
Betty Boop 200
Igor Chevsky 313
Norma Cord 400
Karen Evich 600

*No entiendo como el ej1 imprime el BB Kingson 803 cuando BB esta seguido por una B mayúscula y el ej2 no imprime el Jon DeLoach 500 y BB Kingson 803. El libro dice que el metacaracter "*" hace que se repitan 0 a más elementos del digito anterior.
Entonces si "/B[a-z]*/" imprime BB Kingson 803 porque "/^[A-Z][a-z]*\s[A-Z][a-z]*\s/" no imprime Jon DeLoach 500 y BB Kingson 803?

Ojala puedan responder.
Un saludo gente.