Foros del Web » Programando para Internet » PHP »

Expresiones regulares: "-cualquier caracter- excepto este caracter"

Estas en el tema de Expresiones regulares: "-cualquier caracter- excepto este caracter" en el foro de PHP en Foros del Web. Hola! Estoy realizando un proyecto mío independiente para crear una base de datos (si, ya se que estoy reinventando la rueda :P). Lo estoy programando ...
  #1 (permalink)  
Antiguo 22/08/2010, 16:25
 
Fecha de Ingreso: abril-2009
Mensajes: 13
Antigüedad: 15 años
Puntos: 0
De acuerdo Expresiones regulares: "-cualquier caracter- excepto este caracter"

Hola!

Estoy realizando un proyecto mío independiente para crear una base de datos (si, ya se que estoy reinventando la rueda :P). Lo estoy programando en C.

Para el chequeo de las querys quiero usar expresiones regulares usando PCRE para C, siendo compatibles con las usadas en PHP. Posteo aquí porque podría hacer la misma pregunta si programara con PHP y es el lenguaje que mejor conozco.

Como ya he puesto en el titular necesito obtener la expresión regular para detectar cualquier carácter excepto un carácter en concreto. Un ejemplo:
(comillas incluidas en el string) Texto válido:
Código:
'abcd1234abcd'
Parece sencillo decir que sería en expresión regular:
Código:
^'[0-9a-zA-Z]*'$
ó
^'\w*'$
Mi problema viene cuando se da la posibilidad de que ocurra esto (texto invalido):
Código:
'abd13'45bda'
ó
'abcñò{}1'234ab'
En el primer ejemplo se ve que hay una comilla simple de mas. En el siguiente se ve que hay caracteres "especiales" como la ñ entre otros.

Hay una aproximación al segundo ejemplo:
Código:
^'.*?'$
El problema está en que el . incluye -cualquier carácter-, incluyendo la comilla..., y no se me ocurre una manera de plantearme el problema de: "cualquier carácter por en medio excepto una comilla".

PD: Estoy usando para ejecutar ejemplos de expresiones regulares esta web: http://www.metriplica.com/4_4_herramientas.asp (está hecha en ASP pero no creo que haya diferencias respecto a usar PCRE).

Un saludoooo

Última edición por Bloodsucker; 22/08/2010 a las 16:27 Razón: Titular más serio
  #2 (permalink)  
Antiguo 22/08/2010, 16:29
Avatar de geq
geq
 
Fecha de Ingreso: agosto-2006
Ubicación: Rosario
Mensajes: 655
Antigüedad: 17 años, 8 meses
Puntos: 22
Respuesta: Expresiones regulares: "-cualquier caracter- excepto este caracter"

Hola

Podés negar un set de caracteres con el símbolo ^. Por ejemplo:

Código:
/[^']/
Significa cualquier caracter excepto '. Habría que ver como implementarlo en lo tuyo.

Saludos
  #3 (permalink)  
Antiguo 22/08/2010, 17:18
 
Fecha de Ingreso: abril-2009
Mensajes: 13
Antigüedad: 15 años
Puntos: 0
Respuesta: Expresiones regulares: "-cualquier caracter- excepto este caracter"

Cita:
Iniciado por geq Ver Mensaje
Hola

Podés negar un set de caracteres con el símbolo ^. Por ejemplo:

Código:
/[^']/
Significa cualquier caracter excepto '. Habría que ver como implementarlo en lo tuyo.

Saludos
Gracias por responder.

Conocía esa implementación. Yo había pensado algo así:
Código:
/[.*?^']/
El problema es que el "punto" son todos los caracteres incluyendo la comilla y ocurre algo raro ahí y no funciona. Además, creo que lo que he puesto no tiene sentido puesto que los [ ] son para "rangos".

Espero sugerencias... porfi :)

¡Un saludo!

--EDITO--

Buenoooooooo. Se ve que esto de trabajar a estas horas de la noche destrozan la cabeza a cualquiera. Gracias geq ^^.
Este es el resultado que funciona y que no tiene ningún misterio...:
Código:
'([^']*)'
Busca "una cadena de texto que esté entre dos comillas simples y que no contenga comillas simples"....

Funciona con:
Código:
'aabb2233' (aquí si funcionar)
'a23a'bb' (aquí no debe funcionar, claro)
'aaññbb' (aquí si debe funcionar)
'aa22ññ'''''asdfb' (Aqui no debe funcionar.)
Gracias de nuevo!!!

Última edición por Bloodsucker; 22/08/2010 a las 17:41

Etiquetas: expresiones, regulares, caracteres
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 09:50.