2012-04-17 15 views
5

Estoy tratando de hacer coincidir un grupo en expresiones regulares, pero no quiero que este grupo esté en el resultado final.Coincidir pero no incluir en el resultado usando regex

Por ejemplo:

((kl(\.)?|at)?([0-1][0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?)

Ejecución de la expresión anterior en at 12:25 debe devolver 12:25.

¿Hay alguna manera de hacer esto?

He intentado utilizar:

(?:((kl(\.)?|at)?)([0-1][0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?)

Pero eso no es diferencia.

Luego probé

(?<!(?:((kl(\.)?|at)?)([0-1][0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?)

Pero que ha devuelto un resultado vacío.

Estoy usando la expresión en C#.

+0

'(?: ...)' - grupo no captivo – kirilloid

+0

Eso devuelve el resultado completo. P.ej. 'a las 12: 25' similar a' (?: ...) ' – simonbs

Respuesta

9

Un grupo que no captura (no se encuentra en los grupos de coincidencias) se denota como (? :). Así,

(?:(?:kl(?:\.)?|at)?([0-1][0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?) 

Pero parece expresión regular a estructurarse mal desde el principio. Usted no captura los minutos.

Cuestiones relacionadas