我正在开发一个项目,将几十个html文件转换为文本文件,并编写了替换regexp公式来完成这项工作。问题是,如何连续应用所有六个,然后对目录中的每个文件中的每个文件执行此操作?我附上了我的组织解释,包括正则表达式,但请记住,那些不是问题;他们完成自己的工作(在翻译^ J等之后)。问题是如何以编程方式将所有六个应用于目录中的每个(HTML)文件?
* 1. Delete all until >General Conference<
\(.*^J\)*.*?General Conference
* 2. Delete all <p class="copyright"> and after
^.*<p class="copy\(.*^J\)*
* 3. Strip all tags
\(<.*?>\)*
* 4. Remove whitespace lines
^\s-*^J
* 5. Remove ugly numeric identifier
^\s-*[0-9].*^J
* 6. Remove amp
& -> &
答案 0 :(得分:4)
dired-mark
)单独标记每个文件,或者在菜单栏的标记菜单中标记其他一些机制,例如< kbd> * 。 html
RET (dired-mark-extension
)标记所有扩展名为html
的文件。dired-do-query-replace-regexp
)替换的任何示例什么都没有正则表达式。你可以使用Ωmega的正则表达式。答案 1 :(得分:1)
以务实的方式做这件事并不难。但惯用的Emacs解决方案是记录2个键盘宏。
在单个内容中使用replace-regexp
执行每个正则表达式替换
缓冲液中。
在直接缓冲区中,
然后你会以荒谬的数字 C-u 1000 或其他东西运行(2)。
答案 2 :(得分:0)
似乎只是您编写函数并将其应用到文件列表中的一个步骤。
这是一个开始它的草稿:
(defun my-replacements ()
(interactive "*")
(save-restriction
(widen)
(save-excursion
(goto-char (point-min))
(while (re-search-forward "FIRST-REGEXP" nil t 1)
(replace-match "FIRST-REPLACEMENT"))
重复最后3行直到覆盖所有表格。