2012-10-18 14 views
5

Sto abbinando un gruppo ripetuto che contiene una combinazione di gruppi opzionali e non opzionali. Quando eseguo l'iterazione delle acquisizioni, le raccolte di acquisizione vengono sempre compresse, ovvero non inseriscono un elemento nullo per gli elementi non corrispondenti.C# regex acquisisce

Esiste un modo per mantenere l'ordine delle corrispondenze nelle raccolte di cattura, in modo tale che qualsiasi elemento facoltativo omesso venga inserito come null, garantendo in tal modo che gli elementi della raccolta di cattura corrispondano tra i gruppi?

Per chiarire, diciamo che il mio gruppo (padre) ripetuto è abbinato tre volte, e in una delle tre corrispondenze è stato omesso un gruppo figlio facoltativo ma era presente negli altri due gruppi, finisco con una raccolta di cattura per l'elemento omesso che è un elemento in meno rispetto alle altre raccolte di cattura. Come faccio a sapere quale dei gruppi principali ha omesso l'elemento facoltativo?

Suppongo che sarebbe possibile utilizzare la proprietà Index dell'elemento della raccolta di acquisizione e verificare se rientra nei limiti del gruppo padre, ma sarebbe più semplice se le non corrispondenze restituissero un elemento nullo nella raccolta di acquisizione . C'è un modo per ottenere questo?

+0

Potete fornire alcuni esempi di codice per dimostrare? – PinnyM

risposta

10

Invece di (pattern)? uso (pattern|) e si dovrebbe ottenere quello che vuoi ...

+0

Fantastico, è fatto! Molte grazie! – pdm2011