消除文本文件中某些模式的最简单方法

时间:2011-04-19 18:26:32

标签: string design-patterns replace text-files vcard

我有一个包含数千个联系人的vCard文件。在vCard文件中,联系人被串在一起,

包含了一个联系人
BEGIN:VCARD
...    
END:VCARD

可以通过

设置公司或组织
ORG;CHARSET=UTF-8:My Company;    

我正在寻找最简单的方法来消除每个 no 公司的条目。我不介意它是脚本语言还是Notepad ++。

有什么建议吗?谢谢!

1 个答案:

答案 0 :(得分:0)

您是否考虑过正则表达式?

您可以创建一个需要公司字段的正则表达式,然后存储生成的捕获。任何没有公司字段的元素都不会被捕获,因此会被删除。

例如:

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,则保留它。如果它不匹配,则没有companyName,所以不要保存它。

我相信你可以用一个正则表达式做到这一点,但这对我来说可以解决问题