Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] ¿por que no me captura la cadéna de carácteres?

Estas en el tema de ¿por que no me captura la cadéna de carácteres? en el foro de PHP en Foros del Web. Hola. No comprendo por que ésta REGEX no me captura la cadéna de carácteres. Pueden explicarme por favor? Código PHP:     $k  =  '"aquí cualquier cantidad de caracteres con o sín especiales ñáú..."' ;      ...
  #1 (permalink)  
Antiguo 21/10/2015, 09:00
SLD
 
Fecha de Ingreso: diciembre-2013
Mensajes: 121
Antigüedad: 10 años, 4 meses
Puntos: 6
¿por que no me captura la cadéna de carácteres?

Hola.

No comprendo por que ésta REGEX no me captura la cadéna de carácteres.

Pueden explicarme por favor?
Código PHP:
    $k '"aquí cualquier cantidad de caracteres con o sín especiales ñáú..."';

    
$x '(\w)*';
    
preg_match("@$x@is"$k$r);
    
print_r($r);

    
$x '[\w\pL ]*';
    
preg_match("@$x@is"$k$r);
    
print_r($r);

    
$x '\w*';
    
preg_match("@$x@is"$k$r);
    
print_r($r); 
cómo capturo esas letras?


Gracias
  #2 (permalink)  
Antiguo 21/10/2015, 11:47
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: ¿por que no me captura la cadéna de carácteres?

¿Si sabes que las expresiones regulares tienen sus propias reglas y es considerado un lenguaje independiente?

Te invito a visitar el sub-foro de RegExp por si tienes más dudas, te explico:

1. Los cuantificadores * están mal, porque significan cero o más, y sin usar anclas (^$) básicamente no se extiende más allá, es decir: no es greedy

2. Igual te hace falta el modificador "u" para que acepte todo como Unicode, eso es básico si tratas de usar meta-agrupadores tipo \p*

Así ya funciona mejor:
Código PHP:
Ver original
  1. $k = '"aquí cualquier cantidad de caracteres con o sín especiales ñáú..."';
  2.  
  3. $x = '(\w+)';
  4. preg_match("@$x@uis", $k, $r);
  5. print_r($r);
  6.  
  7. $x = '[\w\pL ]+';
  8. preg_match("@$x@uis", $k, $r);
  9. print_r($r);
  10.  
  11. $x = '\w+';
  12. preg_match("@$x@uis", $k, $r);
  13. print_r($r);

La solución consiste básicamente en usar + que significa uno o más, además sí es greedy e intentará "comer" tanto como alcance la expresión.

Además con el modificador "u" nos aseguramos de "entender" Unicode, un requerimiento básico a estas alturas.

Otro error común es colocar los cuantificadores fuera de los paréntesis: jamás debes hacerlo.

Lo correcto primero es cuantificar y agrupar, el último paso sería capturar.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 25/10/2015, 19:52
SLD
 
Fecha de Ingreso: diciembre-2013
Mensajes: 121
Antigüedad: 10 años, 4 meses
Puntos: 6
Respuesta: ¿por que no me captura la cadéna de carácteres?

Cita:
Iniciado por pateketrueke Ver Mensaje
La solución consiste básicamente en usar + que significa uno o más, además sí es greedy e intentará "comer" tanto como
Muchas gracias Pateketrueque.

:)

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:42.