Foros del Web » Programando para Internet » PHP »

puntos en expresiones regulares con preg_match()

Estas en el tema de puntos en expresiones regulares con preg_match() en el foro de PHP en Foros del Web. Hola: Estoy haciendo una aplicación en la que necesito, a partir de una condición, sacar una palabra de un diccionario que la cumpla. Se da ...
  #1 (permalink)  
Antiguo 07/03/2012, 07:12
boli-sp
Invitado
 
Mensajes: n/a
Puntos:
puntos en expresiones regulares con preg_match()

Hola:

Estoy haciendo una aplicación en la que necesito, a partir de una condición, sacar una palabra de un diccionario que la cumpla.
Se da por supuesto que todas las palabras tienen la misma longitud (en el ejemplo es 9) y que sólo vamos a tener letras mayúsculas (incluída la Ñ).

Con este código de prueba, tengo que la condición es que empieze por la letra A y el resto de caracteres pueden tomar cualquier valor (representado por puntos).

Ejecutando este código me da que coincide y no debía ser así porque CALAMOCHA no empieza por A, ¿a qué es debido?
Gracias de antemano a aquellos que contestéis.

Código PHP:
<?
$condicion
="A......";
$palabra="CALAMOCHA";
if(
preg_match("/$condicion/",$palabra))
    echo 
"coincide";
else
    echo 
"no coincide";
?>
PD: si existe un manual con bastantes ejemplos sobre expresiones regulares, les agredecería que me pasaran un enlace
  #2 (permalink)  
Antiguo 07/03/2012, 07:49
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: puntos en expresiones regulares con preg_match()

prueba con esta expresión
Cita:
/^((A)([A-Z\xc0-\xff]+))$/
puedes empezar leyendo este
para la equivalencia hexadecimal de los caracteres especiales
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #3 (permalink)  
Antiguo 07/03/2012, 11:08
boli-sp
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: puntos en expresiones regulares con preg_match()

gracias por contestar!

comentar que he tenido un fallo en el código que puse arriba. a $condición le faltaban puntos porque no tenía la misma longitud que $palabra

Código PHP:
Ver original
  1. $condicion="A........";

con esa expresión que se intenta hacer porque no me funciona?
  #4 (permalink)  
Antiguo 07/03/2012, 11:41
Avatar de OsSk4R  
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 17 años, 6 meses
Puntos: 74
Respuesta: puntos en expresiones regulares con preg_match()

No te he entendido muy bien. A ver, ¿quieres que te comrpuebe si empieza por A? ¿y que tengan un máximo de 9 letras?
Sí es así mira a ver si esto te funciona:
Código PHP:
Ver original
  1. $condicion="^A[A-ZÑ]{8}";
  2. $palabra="CALAMOCHA";
  3. if(preg_match("/$condicion/",$palabra))
  4.     echo "coincide";
  5. else
  6.     echo "no coincide";

Cita:
Ejecutando este código me da que coincide y no debía ser así porque CALAMOCHA no empieza por A, ¿a qué es debido?
Es debido a que no añades el anlca (^) que indica que debe de empezar por ese caracter. En este caso la letra A.

Una guía

Saludos,
  #5 (permalink)  
Antiguo 07/03/2012, 14:46
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: puntos en expresiones regulares con preg_match()

Cita:
Iniciado por boli-sp Ver Mensaje
con esa expresión que se intenta hacer porque no me funciona?
funcionar ..... funciona. otra cosa es que no sepas integrarla
Cita:
if(preg_match("/^((A)([A-Z\xc0-\xff]+))$/",$palabra))
hazte un favor y empieza a leer sobre expresiones regulares
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}

Última edición por IsaBelM; 07/03/2012 a las 14:54
  #6 (permalink)  
Antiguo 07/03/2012, 15:44
boli-sp
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: puntos en expresiones regulares con preg_match()

@OsSk4R
Gracias por tu ayuda, y sobre todo por la guía. Muy buena para empezar.

@IsaBelM
Te pido disculpas por si te ha molestado mi comentario.

Etiquetas: expresiones, puntos, regulares
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 18:15.