Использование регулярных выражений для удаления изображений base64 из файла .vcf с использованием Emacs - PullRequest
0 голосов
/ 20 сентября 2011

У меня есть адресная книга Apple, экспортированная как .vcf, где изображения контактов хранятся как base64.Я пытаюсь использовать Emacs для удаления фотографий из файла.

Изображение в файле выглядит так (^ M добавлено экспортером):

...
PHOTO;BASE64:^M
  /9j/4AAQSkZJRgABAFEAAQABAAD/4imoSUNDX1BST0ZJTE95AQEAACmYYXBwbAIAAABtbnRyUkdC
  IFhZWiAH2QAIAB0AZFARAARRY3NwQVBQTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAA
  ...
  G8VVxuGjKs7uxniIKnO0SCOAeXn+InJo8sacff7woor3jEfujQH5e9FFAAH/2===^M
...

И я пытаюсь запросить-заменить на следующее (я использую Ctrl-q, чтобы вставить ^ M и ^ J):

PHOTO;BASE64:^M^J*^M^J

Но это не работает.Что мне здесь не хватает?

Ответы [ 2 ]

2 голосов
/ 20 сентября 2011

Попробуйте это:

PHOTO;BASE64:^M[^^M]*?^M^J

^^M содержит два символа ^ и ^M. Это соответствует всему, кроме ^M

0 голосов
/ 20 сентября 2011

Я не понимаю, для чего ^J хороши. Это что-то особенное в Emacs? Я также не знаю, есть ли в emacs модификатор dotall, но вы можете попробовать это (к моему опыту регулярных выражений с другими движками)

PHOTO;BASE64:^M(\s|[^\s])*?^M

Регулярное выражение Emacs объясняется здесь: www.emacswiki.org

\s - символ пробела

[^\s] не является пробелом

Значит, регулярное выражение соответствует любому между ^ M и ^ M

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...