md常用的正则表达式 目录-入口-由此开始-大纲-总览-概括-枢纽-指导-指引-总领

匹配所有标题:

/(?<=\n|^)#{1,6}(?= ).*/g

  1. 注意, 该正则无法过滤代码块里面的标题

获取标题级别:

/(?<=\n|^)#{1,6}(?= )/ #个数就是标题的级别

匹配YAML:

/(^---\n)(.)*?(\n?---(\n|$))/gs

1. 说明:

  1. 第二组为YAML中的字符串内容

匹配YAML格式的多行标签:

/((?<=\n)tags: *\n)((((?<=\n)- {1,}((.*?) {1,})*((.*?) *)\n)|((?<=\n)#(?<annota>.*?)\n))*)/g

1. 说明:

  1. 第二个捕获组为标签内容(包括YAML注释)

代码块语法

段落代码快

段落代码块的一半

/(?<=\n)( |\t)*(`{3,})[^`\n]*\n/g

1. 说明:

  1. 第二个捕获组就是```

行内代码块

三级代码块

/(?<!`)(```)([^\n`]|(?<!`)(`|``)(?!`))*(```)(?!`)/g

  • 匹配结果是整行代码块,包括```

二级代码块

/(?<!`)(``)([^\n`]|(?<!`)`(?!`))*(``|\n|$)(?!`)/g

  • 匹配结果为整行,包括标记符

一级代码块:

/(?<!`)(`)([^\n`])+(`|\n|$)(?!`)/g

  • 匹配结果为整行,包括标记符

匹配加粗:

/(\*\*)(.+?)(\*\*)/g

1. 说明:

  1. 匹配整个中代码块, 包括**
  2. 组1和组3分别问第一个和第二个**
  3. 组2为中间的内容

2. 只匹配加粗的标识符:

/(?<!\\)\*+/g

2.1. 说明:

  1. 通常用于删除加粗的格式

匹配高亮:

/(==)(\*{0,3})(?<str>.+?)(\*{0,3})(==)/g

1. 说明:

  1. 匹配整个中代码块, 包括==和所包围的*
  2. 组1和组3分别问第一个和第二个==
  3. 组3或名为str的组为高亮的字符串

2. 只匹配高亮的标识符

/(?<!\\)=+/g

匹配链接:

1. 匹配链接半边格式:

/\!?(?<!\\)\[[?<!\\)\](?<!\\|(?<!\\|(?<!\\)\]]\[[?<!\\)\](?<!\\|?|(?<!\\)\]]%5C[?)\]?/g

1.1. 说明:

  1. 适用于把链接格式删除去掉