我正在寻找可以支持以下测试用例的正则表达式:This shouldall beone match#this should not match1. nor this> nor thisthis should be a second match所以我可以将这两个匹配项包装在 <p> 标记中。但是,我被困在换行符上:两个应该打破比赛,但一个换行符不能。这是我最接近的:(^[A-z].+)这正确地抓取了所有需要的文本,但形成了四个匹配而不是所需的两个。关于正则表达式感谢您的时间。
3 回答

肥皂起泡泡
TA贡献1829条经验 获得超6个赞
这不是您可以使用单个正则表达式完成的事情。虽然某些 Markdown 实现确实使用正则表达式作为解析 Markdown 的主要工具,但它们使用一系列表达式来这样做(参见原始实现,markdown.pl
例如)。
例如,您可能有一个匹配标题的表达式、一个匹配列表项的表达式、一个匹配块引号的表达式和一个匹配任何文本块的表达式。这些表达式中的每一个都将依次针对输入运行。但是,在运行最后一个表达式时,系列中的前一个表达式已经消耗了各种其他元素。因此,匹配段落的最终表达式不需要考虑标题、列表或块引用的匹配。
事实上,如果您要从 中删除标头表达式markdown.pl
,那么所有标头都将简单地包装在<p>
标签中,而散列 ( #
) 仍包含在文本中。
我的意思是你需要实现一个完整的 Markdown 解析器。但是,已经存在许多实现。您可能最好使用一个已经存在的。事实上,大多数现代实现生成抽象语法树 (AST) 而不是进行正则表达式替换(正如另一个答案中指出的那样)。

Smart猫小萌
TA贡献1911条经验 获得超7个赞
像 Markdown/Commonmark 这样的语法不能 [easily, if at all] 用正则表达式解析。
使用适当的解析器来生成您可以操作的 AST。
添加回答
举报
0/150
提交
取消