使用记事本++删除所有只有电子邮件的联系人

Remove all contacts with only emails using notepad++

在 Notepad++ 中,如何删除所有具有以下结构的条目。

BEGIN:VCARD
VERSION:2.1
EMAIL;INTERNET:example@example.com
END:VCARD

注意:example@example.com 可以是任何电子邮件地址。

我已经以 vcf 格式导出了整个联系人文件,并希望删除只有 EMAIL 地址而没有任何 phone 号码(如上所示)的联系人。

有没有办法在 Notepad++ 中执行此操作?也许通过使用正则表达式搜索和替换功能?

(?s)BEGIN:VCARD(?:(?!END:VCARD|\bTEL\b).)*END:VCARD

仅当 vCard 不包含 TEL 条目时才会匹配它们。

解释:

(?s)          # Allow the dot to match newlines.
BEGIN:VCARD   # Match "BEGIN:VCARD".
(?:           # Start non-capturing group.
 (?!          # Make sure we're not able to match either
  END:VCARD   # the text "END:VCARD" (we don't want to match beyond the end)
 |            # or
  \bTEL\b     # "TEL" (because we don't want them to be in the match).
 )            # End of lookahead.
 .            # Match any character (if the preceding condition is fulfilled),
)*            # repeat as needed.
END:VCARD     # Match "END:VCARD"

我假设所有 vCard 中至少有一个电子邮件地址,或者您还需要过滤这些地址吗?