Попробуйте следующее регулярное выражение:
(?<FIELD>[^\s:;]+)(;(?<PARAM>[^=:;]+)=\"?(?<VALUE>[^:;]+)\"?)*:(?<CONTENT>[^;]*;?)*
Этот запрос, кажется, обрабатывает оба примера vCard 3.0 здесь :
ADR;TYPE=WORK:;;100 Waters Edge;Baytown;LA;30314;United States of America
ADR;TYPE=HOME:;;42 Plantation St.;Baytown;LA;30314;United States of America
И пример 4.0:
ADR;TYPE=work;LABEL="42 Plantation St.\nBaytown, LA 30314\nUnited States of America"
:;;42 Plantation St.;Baytown;LA;30314;United States of America
Это также соответствует этому примеру из спецификации vCard 4.0 здесь :
ADR;GEO="geo:12.3457,78.910";LABEL="Mr. John Q. Public, Esq.\n
Mail Drop: TNE QB\n123 Main Street\nAny Town, CA 91921-1234\n
U.S.A.":;;123 Main Street;Any Town;CA;91921-1234;U.S.A.
Мой отказ от ответственности заключается в том, что я не имею опыта в vCardЯ просто просмотрел часть спецификации и посмотрел примеры, играя с RegExr , так что, возможно, я пропускаю некоторые крайние случаи.