Задумывались ли вы о регулярных выражениях?
Можно создать регулярное выражение, для которого требуется поле компании, и затем сохранить полученные снимки.Любой элемент, который не имеет поля компании, не будет захвачен и, следовательно, будет удален.
Например:
BEGIN:VCARD
...
ORG;CHARSET=UTF-8:My Company;
...
END:VCARD
BEGIN:VCARD
...
...
END:VCARD
BEGIN:VCARD
...
ORG;CHARSET=UTF-8:My Company;
...
END:VCARD
Вы можете захватить отдельную vCard с помощью: BEGIN:VCARD\s+(.*?$\s+)+?END:VCARD
Затем при каждом совпадении, если захваченная строка также соответствует: BEGIN:VCARD\s+(.*?$\s+)+ORG;CHARSET=UTF-8:(?<companyName>.*?);\s+(.*?$\s+)+END:VCARD
, сохраните ее.Если это не совпадение, название компании отсутствует, поэтому не сохраняйте его.
Я уверен, что вы можете сделать это с помощью одного регулярного выражения, но это поможет мне, решив проблему