我可以使用正则表达式将这些示例转换为markdown吗?

时间:2015-02-01 05:20:35

标签: regex markdown

我一直致力于google docs to markdown converter将用Google文档编写的帖子转换为可以在jekyll中轻松使用的内容。不幸的是,谷歌文档有一些弱点,使转换变得非常重要。例如,kramdown emphasis要求强调的文字是"包围"通过强调标记,其中:

  

包围意味着起始分隔符后面不能有空格,并且停止分隔符的前面不能有空格。

另一方面,在google docs中,可以强调空格,这将生成kramdown无法解析的输出。

* em *将生成* em *,而不是 em

我已经写了一个正则表达式,可以匹配和替换这个错误的重点,但是我被困在一个角落的情况下。

/(\*+)(\s*\b)([^\*]*)(\b\s*)(\*+)/g将正确匹配(从而允许替换下面的每个重点区域):

  

*** Strong italic text ***, and even just *strong text *, when rendered in * Markdown*, doesn't like *spaces * around the boundaries of the stars.

但是当一个词内有强调时会窒息。

  

* You can see it also within the li**n**es here. *

(现在比赛停止时,* s在#34;行"并且在终止*之前没有捕获"" s。

这一切在regexr上都很明确。

如何编辑正则表达式以正确处理这个角落的情况,即忽略(正确)嵌入单词中的*?

1 个答案:

答案 0 :(得分:1)

好像你想要这样的东西。

\B(\*+)(\s*)(?:\b\*+\b|[^*\s]|\s(?=\w))*(\s*)(\*+)\B

DEMO