Foros del Web » Programación para mayores de 30 ;) » RegExp »

problema con regexp :S

Estas en el tema de problema con regexp :S en el foro de RegExp en Foros del Web. Hola a todos, bueno, tengo un problema con el regexp. Estoy haciendo un script en python, el cual al principio funcionaba, pero leugo encontre una ...
  #1 (permalink)  
Antiguo 06/03/2010, 16:53
Avatar de Zheo  
Fecha de Ingreso: marzo-2010
Mensajes: 3
Antigüedad: 14 años, 9 meses
Puntos: 0
Pregunta problema con regexp :S

Hola a todos, bueno, tengo un problema con el regexp. Estoy haciendo un script en python, el cual al principio funcionaba, pero leugo encontre una falla de la cual no he podido remediar. Tengo la siguiente cadena de texto: testo = '{\k22}{\k20}"Now" {\k20}I’ve {\k31}lost {\k38}it'

Está cadena le quiero sacar los tiempos que vienen despues de cada \k y también las silabas que vienen despues de cada }. El problema que tengo son los carácteres especiales '`´’?! y los que no contienen letra, como es el caso de "{\k22}{\k..."

Tengo la siguiente expresión:
"for ti, tx in re.findall(r'{\\[kK]([\d]+)}([\w\W+\s]+|\s+)', testo):"

lo que me devuelve:
(['{\\k20}"Now" {\\k20}I\xe2\x80\x99ve {\\k31}lost {\\k38}it'], [220])

y devería ser algo así:
(['', '"Now"', 'I’ve', 'lost ', 'it'], [22, 20, 20, 31, 38])

En que estoy fallando?. Ojalá alguien puede guiarme, ya que sólo esta semana empece a leer sobre RE. De ante mano, gracias!

:D
  #2 (permalink)  
Antiguo 07/03/2010, 15:12
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 9 meses
Puntos: 1360
Respuesta: problema con regexp :S

Código Python:
Ver original
  1. s = '{\k22}{\k20}"Now" {\k20}I\'ve {\k31}lost {\k38}it'
  2. pattern = re.compile(r"{\\k(\d+)}([^{]*)")
  3. print pattern.findall(s)

Etiquetas: python
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 12:43.