Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/04/2013, 04:55
andriu_one
 
Fecha de Ingreso: febrero-2011
Mensajes: 3
Antigüedad: 13 años, 9 meses
Puntos: 0
Macheo de varias lineas

Hola gente, a ver si me podéis echar una mano con una expresión regular que tengo que hacer. La verdad es que no trabajo en esta rama de la informática pero esta vez me ha tocado hacer esto, y estoy perdido.
Os cuento lo que necesito a ver si se os ocurre el cómo; voy a chequear que cuando se da una palabra en un texto, no sé de otra palabra X líneas más abajo de donde se encontro la primera palabra.
Es decir, "gráficamente", estoy buscando cuando en el fichero se da Grupo 1 y no se encuentra Valor D. En el fichero podrá haber muchas agrupaciones de valores pero necesito ver en cuales de ellas tengo un determinado valor, en el ejemplo Valor D.
Grupo 1
Valor A
Valor B
Valor C
Valor F
Grupo 2
Valor A
Valor B
Valor D
Valor E
Grupo N
....
....

¿Qué tengo hasta ahora?. Tengo una expresión que hace esto pero siempre y cuando Valor A este justo debajo de Grupo 1.
^Grupo 1\S+
^(?!.*Valor A).*$
Tengo otra expresión regular que chequea la existencia de Grupo 1 y un número de líneas indefinido más abajo la existencia de Valor C.
(?s)Grupo 1.*?Valor C
Y este es el mix que he hecho de ambas.
(?s)^(Grupo 1)$.*?^(?!Valor D)$
Según creo esta regex da por bueno Grupo 1 independientemente de que exista o no Valor D, pero no se me ocurre cómo solucionar este comportamiento

¿Me podéis ayudar?, ¿a alguien se le ocurre cómo conseguir el resultado?. A lo mejor lo que no tengo que hacer es un simple mix de ambas expresiones y hay que plantear la expresión de cero, la verdad es que no sé.

En cualquier caso muchas gracias de antemano por vuestro tiempo
Andres