2012-04-17 13 views
5

Sto cercando di abbinare un gruppo di espressione regolare, ma non voglio che questo gruppo sia nel risultato finale.partita, ma non includono nel risultato utilizzando regex

Ad esempio:

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

L'esecuzione del espressione di cui sopra sul at 12:25 dovrebbe restituire 12:25.

C'è un modo per farlo?

Ho provato ad utilizzare:

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

Ma questo è alcuna differenza.

Poi provai

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

Ma restituito un risultato vuoto.

Sto usando l'espressione in C#.

+0

'(:? ...)' - gruppo – kirilloid

+0

che restituisce l'intero risultato non cattura. Per esempio. 'a 12: 25' simile a' (?: ...) ' – simonbs

risposta

9

Un gruppo non catturante (non trovato nei gruppi di corrispondenza) è indicato come (? :). Così,

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

Ma ti sembra regexp da torto strutturato fin dall'inizio. Non catturi i minuti.

Problemi correlati