Salve,

Mi sto battendo duramente con le espressioni regolari per creare un parser per vCard, sono riuscito a far funzionare tutto ma c'è un piccolissimo errore che mi scombina tutto.

Ho questo testo:
codice:
N:cognome;nome;secondo nome;prefisso;suffisso
e devo estrarre tutti i vari oggetti (N,nome,cognome,ecc.) e per farlo usa questa regex:
codice:
(\n(?<strElement>(N)))   (: (?<strSurname>([^;]*))) (;(?<strGivenName>([^;]*)))  (;(?<strMidName>([^;]*))) (;(?<strPrefix>([^;]*))) (;(?<strSuffix>[^\n\r]*))
tutto funziona però spesso se non viene inserito un secondo nome o un altro oggetto l'editor non sempre inserisce il ';' e quindi potrei trovarmi di fronte a situazioni così:
codice:
N:cognome;nome
e a questo punto viene estratto oltre che alla stringa 'nome' anche il terminatore di riga e tutta la linea sottostante finchè non trova un ';'.

Io vorrei dire al motore regex di prendere ogni oggetto fino a un ';' oppure fino al terminatore riga.

Come posso fare?

Grazie mille