Ver Mensaje Individual
  #2 (permalink)  
Antiguo 09/04/2013, 10:00
Avatar de pateketrueke
pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Expresión regular según patrón

Una de las cualidades de las expresiones regulares es que mantienen también normas lógicas, en algunos casos es conveniente especificar que secuencia de caracteres es permitida pero en otros escenarios conviene más permitir todo excepto ciertas secuencias, lo cual sería una negación.

Tu problema es mas sencillo de atacar si la expresión que pretende capturar el valor se entendiera como "cualquier cosa excepto comillas", ¿tiene más sentido o no?

Cita:
[^']+
Ahora, como lo planteas algunos valores no requieren comillas, si las comillas son opcionales, entonces debes hacerlas también opcionales en la expresión que captura los valores.

Cita:
('?)[^']+?\1
Para poder delimitar con mayor precisión necesitarías especificar que al final del patrón va seguido por el fin de la cadena o también el mismo patrón repitiéndose (el caso mas sencillo de obtener esto sería especificando mínimo la clave).

Cita:
(?=\s*,\s*[\w-]+:|$)
Y claro, especificar espacios de manera opcional y flexible donde se pueda dar la posibilidad.

Cita:
\s*
Finalmente el patrón de la clave debe ser bastante sencillo, imagino que únicamente buscas capturar claves normalizadas, es decir secuencias alfanuméricas con guiones y nada más.

Cita:
[\w-]+
En suma el patrón debería quedar así:

Cita:
/\b([\w-]+)\s*:\s*('?)([^']+?)\\2(?=\s*,\s*[\w-]+:|$)/
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.