在 markdown 文档的整理的时候,如果只是一个段结束,换行,不空一行就新起一段,那么最终显示的时候就好像这两段之间没有空行一样。。。emmmm。。。这好像是句废话
简单来说就是我在用 vscode 的正则表达式查找替换功能,想把一个 markdown 中任何之间没有空行(即只有段结尾一个换行符,然后就立刻新起一段)的两段都改成中间有一个空行的。。不知道这个正则表达式该怎么写。。
另外因为 markdown 里有表格,所以要除外表格的分隔符|
后只接一个换行符的情况。。。
谢谢!!
1
geelaw 2019-12-10 13:57:38 +08:00 via iPhone 1
首先你对 Markdown 的语法理解有误。Markdown 换段需要有一个空白行,所以换一行并没有换段。在经典 Markdown 中,段落内换一行等同于一个空格,因为默认的 p 的 white-space 是 normal。在非经典实现中可能会让段显示为 pre-line,或者插入 br。
最佳实践是两个块级元素之间都应该有一个空白行,因此在表格周围也应该有空白行。 使用正则表达式替换是非常困难的,因为 Markdown 的句法不是正则语言。例如,用一个很短的正则表达式无法区分换行是否处于一段 code block 内,进而无法发现这里是否应该增加一个空行。又例如它很难处理 block quote 里面需要增加带有 > > 的空白行的情况。 如果没有上述情况,只要替换(\S)\n(\S) 为 $1\n\n$2 即可。 |
2
sivacohan 2019-12-10 14:05:10 +08:00 1
查找: ^((?!#))(.+?)((?<!\|))$
替换: $1$2$3\n 用了三个组: 第一个排除了开头是#(标题) 第二个排除了本身就是空行的情况 第三个排除结尾是|(表格的情况) |
3
MonoLogueChi 2019-12-10 14:50:12 +08:00 via Android
说句题外话标准 markdown 语法,换行好像是结尾空 2 格,gfm 标准好像是直接换行,具体怎么实现都是看渲染器的。
|