md常用的正则表达式 目录-入口-由此开始-大纲-总览-概括-枢纽-指导-指引-总领
匹配所有标题:
/(?<=\n|^)#{1,6}(?= ).*/g
- 注意, 该正则无法过滤代码块里面的标题
获取标题级别:
/(?<=\n|^)#{1,6}(?= )/
#个数就是标题的级别
匹配YAML:
/(^---\n)(.)*?(\n?---(\n|$))/gs
1. 说明:
- 第二组为YAML中的字符串内容
匹配YAML格式的多行标签:
/((?<=\n)tags: *\n)((((?<=\n)- {1,}((.*?) {1,})*((.*?) *)\n)|((?<=\n)#(?<annota>.*?)\n))*)/g
1. 说明:
- 第二个捕获组为标签内容(包括YAML注释)
代码块语法
段落代码快
段落代码块的一半
/(?<=\n)( |\t)*(`{3,})[^`\n]*\n/g
1. 说明:
- 第二个捕获组就是```
行内代码块
三级代码块
/(?<!`)(```)([^\n`]|(?<!`)(`|``)(?!`))*(```)(?!`)/g
- 匹配结果是整行代码块,包括```
二级代码块
/(?<!`)(``)([^\n`]|(?<!`)`(?!`))*(``|\n|$)(?!`)/g
- 匹配结果为整行,包括标记符
一级代码块:
/(?<!`)(`)([^\n`])+(`|\n|$)(?!`)/g
- 匹配结果为整行,包括标记符
匹配加粗:
/(\*\*)(.+?)(\*\*)/g
1. 说明:
- 匹配整个中代码块, 包括
** - 组1和组3分别问第一个和第二个
** - 组2为中间的内容
2. 只匹配加粗的标识符:
/(?<!\\)\*+/g
2.1. 说明:
- 通常用于删除加粗的格式
匹配高亮:
/(==)(\*{0,3})(?<str>.+?)(\*{0,3})(==)/g
1. 说明:
- 匹配整个中代码块, 包括
==和所包围的* - 组1和组3分别问第一个和第二个
== - 组3或名为
str的组为高亮的字符串
2. 只匹配高亮的标识符
/(?<!\\)=+/g
匹配链接:
1. 匹配链接半边格式:
/\!?(?<!\\)\[[?<!\\)\](?<!\\|(?<!\\|(?<!\\)\]]\[[?<!\\)\](?<!\\|?|(?<!\\)\]]%5C[?)\]?/g
1.1. 说明:
- 适用于把链接格式删除去掉