Emacs:使用多个操作转换字符串

Emacs:使用多个操作转换字符串,emacs,Emacs,我知道,可笑的标题。以下是我需要做的: 以如下所示的字符串为例: * [1.1 Training]() * [1.1.1 Special Training by Category]() * [A. New Hire Orientation Program]() * [1.1 Training](training.md) * [1.1.1 Special Training by Category](special_training_by_category.md) * [A. New Hi

我知道,可笑的标题。以下是我需要做的:

以如下所示的字符串为例:

* [1.1 Training]()
* [1.1.1 Special Training by Category]()
  * [A. New Hire Orientation Program]()
* [1.1 Training](training.md)
* [1.1.1 Special Training by Category](special_training_by_category.md)
  * [A. New Hire Orientation Program](new_hire_orientation_program.md)
并将
.md
后缀添加到每个,并将结果放入参数中,如下所示:

* [1.1 Training]()
* [1.1.1 Special Training by Category]()
  * [A. New Hire Orientation Program]()
* [1.1 Training](training.md)
* [1.1.1 Special Training by Category](special_training_by_category.md)
  * [A. New Hire Orientation Program](new_hire_orientation_program.md)
我正在使用Emacs,需要一个宏来:

  • 搜索每个字符串(行)
  • 在章节号、章节字母或句号之后以及结束“]之前复制所有内容
  • 将其转换为小写,删除空格并替换为下划线
  • 在结果中添加“.md”
  • 在参数之间粘贴结果
  • 我试图学习正则表达式和字符串操作,但这一个似乎相当复杂。感谢您的帮助


    谢谢

    根据需要执行此操作的频率,您可能需要为其编写一个命令。但是可以使用regexp
    query replace regexp
    C-M-%
    )和regexp
    \[\([[:alnum:].]+\)\([[[[:alnum:]]+\])(
    和replacement
    [\1\2](\,(在字符串“”中替换regexp)((downcase\2)).md)来完成。注意
    \,
    :它允许您使用elisp转换字符串

    链接:


    在哪里可以学习阅读您发布的答案?这一次我将复制并使用它,但我想破译它并将逻辑应用到其他地方。(“给一个人一条鱼,你喂他一次。教一个人钓鱼,你喂他一辈子”-类型的东西)添加了一些应该解释一切的链接。要增强钓鱼功能,请阅读(和搜索!)Emacs中的手册:
    C-h i g(elisp)正则表达式
    。您可能需要学习如何使用信息阅读器:在
    *info*
    缓冲区中,您可以键入
    h
    开始教程,键入
    d
    返回顶层页面(顶部有一些有用的注释)。