2015-01-07 5 views
0

У меня есть CSV-файлы, которые содержат запятые в кавычках, напримерEmacs заменить запятую внутри строки в кавычках, используя Заменить Regexp

1,2, «34,123», 4

Я пытаюсь заменить запятые в строку в кавычках, используя Заменить Regexp ("[^",] +), ([^ "] +") с $ 1 $ 2

однако EMACS возвращает 0 вхождений найдено. Есть идеи?

Благодаря Боб

+0

Спасибо за ответ Дрю. Я прочитаю предлагаемые документы. Я раньше не использовал Emacs Lisp. Вы имеете в виду, что код, который вы опубликовали, запускается после того, как я выбрал буфер, содержащий мои данные, используя M-x eval-buffer? – BobMac

ответ

1

Это то, что вы хотите:

(while (re-search-forward "\"[^\",]+\\(,\\)[^\"]+\"") 
    (replace-match "" nil nil nil 1)) 

Вам действительно нужно прочитать документ о replace-regexp, а также документ о регулярных выражениях в Emacs Lisp.

Попытка использования replace-regexp неинтерактивно выполнять замены, которые соответствуют частям матча, нет-нет. Вы хотите использовать цикл, который неоднократно совпадает с текстом, а затем вызывает replace-match, чтобы заменить его или его части.

Начните с изучения того, как Elisp представляет собой регулярное выражение. Затем изучите специальный синтаксис, который replace-match использует для ссылок на части матча - это не $1 и т. Д.

Смежные вопросы