2024 年 3 月 31 日更新:像有序列表和无序列表互换这样比较简单的问题,现在我都用 Vim 处理,不想费脑筋想正则了。
本文记录了我使用过的正则表达式,多数用于处理 Markdown 文档。所有正则表达式均在 VSCode 测试。
有时候我要选取很多段文字,比如某本书的一个章节。以前我选取多段文字都是这样的:
有时候这个招数不太好使,滚动文档的时候也不知道有没有超过了结尾。还是用正则表达式好,不用担心错过了结尾。
以下面的文档作例子,截取第一章的内容:
| |
也就是:
| |
表达式:
| |
(?<=) 为正后发断言(Positive Lookbehind),匹配它后面的内容。(?<=# 第一章\n{2}) 的意思是匹配第一章加两个换行之后的内容。
(?=) 后正先行断言(Positive Lookahead),匹配它前面的内容。(?=\n{2}# 第二章)的意思就是匹配两个换行加第二章。
我们真正需要的文本包括了文字和换行,所以用 (.|\n)+ 来匹配。
假如我有两门课的笔记,需要把它们合并到一块。
把这两份笔记:
| |
| |
合并为(title: 数学 这一部分需要手动输入):
| |
解决思路:
以算术笔记为例:
| |
内容标题等级 + 1
搜索 ^#,替换为 $0#,其实也就是给标题加多个 #
把文档标题变成一级标题
搜索 ---\ntitle: (.+)\n---,替换为 # $1
处理完之后算术笔记就变成这样了:
| |
用同样的方法处理几何笔记:
| |
最后新建一个文档,手动输入 title: 数学,再把两份处理好的文档复制进去就可以了。
| |
我们用上个教程合并的文档为例子:
| |
将其拆分为两份文档:
| |
| |
解决思路:
具体步骤:
删除文档标题
搜索 ---\ntitle:.+\n---\n\n,替换为 空字符串
把一级标题变成文档标题
搜索 ^# (.+) ,替换为 ---\ntitle: $1\n---
内容标题 - 1
搜索 ^#,替换为 空字符串。
结果:
| |
最后把内容复制到两个空文档就可以了。
虽然用正则表达式可以转换列表,其实我觉得 Typora 的列表转换功能更方便,点一下按钮就可以了。
把下面的有序列表转换为无序列表:
| |
搜索 \d+\.(?= ),替换为 -:
| |
有序列表的数字不需要递增,实际上是从第一个数字开始递增的。
比如下面这几个列表显示效果是一样的:
| |
| |
| |
都会显示为:
水果:
- 香蕉
- 椰子
- 葡萄
把下面的无序列表转换为从 2 数起的有序列表:
| |
搜索 -(?= ),转换为 2.:
| |
在 Markdown 中使用多个空行不会增加段落间的空白,下面两份文档显示效果是一样的:
| |
| |
因此,可以删去多余的空行。以上面的文档为例,演示删除多余的空行。
搜索 \n{2,},替换为 \n\n。
有些纯文本文档用一个换行符来分段,增加空行可以快速将其转换为 Markdown 文档。以下面的文档为例子:
| |
搜索 \n,替换为 \n\n:
| |
一般写论文都是用 Word 自动编号的,知网文献的编号没什么用,所以就先把编号删掉。
| |
在 LibreOffice Writer 按下 Ctrl H,搜索 \[\d+\],替换为空字符串。在 MS Word 里面应该搜索 \[[0-9]@\]。替换后之后文献前的数字就没有了:
| |
giscus 评论。如果评论未加载,giscus 可能被你的互联网服务提供商屏蔽。
2024 年 3 月 31 日更新:像有序列表和无序列表互换这样比较简单的问题,现在我都用 Vim 处理,不想费脑筋想正则了。
本文记录了我使用过的正则表达式,多数用于处理 Markdown 文档。所有正则表达式均在 VSCode 测试。
有时候我要选取很多段文字,比如某本书的一个章节。以前我选取多段文字都是这样的:
有时候这个招数不太好使,滚动文档的时候也不知道有没有超过了结尾。还是用正则表达式好,不用担心错过了结尾。
以下面的文档作例子,截取第一章的内容:
| |
也就是:
| |
表达式:
| |
(?<=) 为正后发断言(Positive Lookbehind),匹配它后面的内容。(?<=# 第一章\n{2}) 的意思是匹配第一章加两个换行之后的内容。
(?=) 后正先行断言(Positive Lookahead),匹配它前面的内容。(?=\n{2}# 第二章)的意思就是匹配两个换行加第二章。
我们真正需要的文本包括了文字和换行,所以用 (.|\n)+ 来匹配。
假如我有两门课的笔记,需要把它们合并到一块。
把这两份笔记:
| |
| |
合并为(title: 数学 这一部分需要手动输入):
| |
解决思路:
以算术笔记为例:
| |
内容标题等级 + 1
搜索 ^#,替换为 $0#,其实也就是给标题加多个 #
把文档标题变成一级标题
搜索 ---\ntitle: (.+)\n---,替换为 # $1
处理完之后算术笔记就变成这样了:
| |
用同样的方法处理几何笔记:
| |
最后新建一个文档,手动输入 title: 数学,再把两份处理好的文档复制进去就可以了。
| |
我们用上个教程合并的文档为例子:
| |
将其拆分为两份文档:
| |
| |
解决思路:
具体步骤:
删除文档标题
搜索 ---\ntitle:.+\n---\n\n,替换为 空字符串
把一级标题变成文档标题
搜索 ^# (.+) ,替换为 ---\ntitle: $1\n---
内容标题 - 1
搜索 ^#,替换为 空字符串。
结果:
| |
最后把内容复制到两个空文档就可以了。
虽然用正则表达式可以转换列表,其实我觉得 Typora 的列表转换功能更方便,点一下按钮就可以了。
把下面的有序列表转换为无序列表:
| |
搜索 \d+\.(?= ),替换为 -:
| |
有序列表的数字不需要递增,实际上是从第一个数字开始递增的。
比如下面这几个列表显示效果是一样的:
| |
| |
| |
都会显示为:
水果:
- 香蕉
- 椰子
- 葡萄
把下面的无序列表转换为从 2 数起的有序列表:
| |
搜索 -(?= ),转换为 2.:
| |
在 Markdown 中使用多个空行不会增加段落间的空白,下面两份文档显示效果是一样的:
| |
| |
因此,可以删去多余的空行。以上面的文档为例,演示删除多余的空行。
搜索 \n{2,},替换为 \n\n。
有些纯文本文档用一个换行符来分段,增加空行可以快速将其转换为 Markdown 文档。以下面的文档为例子:
| |
搜索 \n,替换为 \n\n:
| |
一般写论文都是用 Word 自动编号的,知网文献的编号没什么用,所以就先把编号删掉。
| |
在 LibreOffice Writer 按下 Ctrl H,搜索 \[\d+\],替换为空字符串。在 MS Word 里面应该搜索 \[[0-9]@\]。替换后之后文献前的数字就没有了:
| |
giscus 评论。如果评论未加载,giscus 可能被你的互联网服务提供商屏蔽。