你会如何解析 Markdown? [关闭]

2023-11-30

编辑:我最近了解了一个名为 CommonMark 的项目,该项目 正确识别并处理原文中的歧义 降价规范。http://commonmark.org/它有很棒的 C# 库 支持。

你可以找到语法here.

下载后的源代码写在Perl,我无意尊重这一点。它充满了正则表达式,并且依赖于MD5散列来转义某些字符。这件事有些不对劲!

我要硬编码一个解析器Markdown。这方面有什么经验?

如果你对 Markdown 的实际解析没有任何有意义的话可说,请饶过我。 (这可能听起来很刺耳,但是是的,我正在寻找洞察力,而不是解决方案,即第三方库)。

为了帮助找到答案,正则表达式的目的是识别模式!不要解析整个语法。人们认为这样做是foobar。

  • 如果您考虑一下 Markdown,它基本上是基于段落的概念。
  • 因此,合理的方法可能是将输入分成段落。
  • 段落有很多种,例如标题、文本、列表、块引用和代码。
  • 因此,挑战在于识别这些段落以及它们出现的背景。

一旦我发现它值得分享,我会带着解决方案回来。


我所知道的唯一使用实际解析器的 Markdown 实现是乔恩·麦克法兰’s 挂钩降价. 它的解析器是基于一个解析表达式语法解析器生成器称为peg.


EDIT: 毛里西奥·费尔南德斯最近发布了他的简单标记 Markdown 解析器,这是他写的,作为他的一部分OcsiBlog博客引擎。因为解析器是写在OCaml, it is 极其简单而简短(268 个 SLOCparser, 43 SLOC 为HTML 发射器), yet 炽热地 fast(比以下快 20%discount(用手工优化的 C 语言编写)和六百蓝布 (Ruby)),尽管事实上它甚至还没有针对性能进行优化。由于它仅供 Mauricio 本人在其博客内部使用,因此与实际内容存在一些偏差官方 Markdown 规范,但毛里西奥创造了恢复大部分更改的分支.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

你会如何解析 Markdown? [关闭] 的相关文章

  • ANTLR4 在导入时找不到语法

    我正在尝试将 ANTLR4 语法拆分为多个文件 以便我可以更轻松地测试它们 我在 java 项目中使用 gradle 作为构建工具 两种语法都单独正确编译 但是当我将导入添加到我的主语法中时 我收到下一个编译错误 错误 110 kaneko
  • 在 Android 上解析查询字符串

    Java EE 有ServletRequest getParameterValues http java sun com j2ee sdk 1 3 techdocs api javax servlet ServletRequest html
  • 如何在 Java 中解析这样的 URI

    我正在尝试解析以下 URI http translate google com zh CN en 你 http translate google com zh CN 7Cen 7C E4 BD A0 但收到此错误消息 java net UR
  • 尝试解解析 json 字符串,但得到 Expected start of the object '{', but had 'EOF' 相反

    我正在尝试使用 kotlin 可序列化将 json 文件解析为列表 这是我的数据类 Serializable data class Book val epub String val fb2 String val mobi String va
  • 在 Delphi 中使用 XML(将特定数据返回到变量)

    过去几天我一直在尝试使用 Delphi 2010 和 MSXML 我是一个极端的新手 需要一点指导 var MemoryStream TMemoryStream XMLPath String sName String XMLDoc vari
  • 使用 Perl 获取 值

    因此 我有一个报告工具 可以在 HTML 文件中输出作业调度统计信息 并且我希望使用 Perl 来使用这些数据 但我不知道如何单步浏览 HTML 表 我知道如何使用 jQuery 来做到这一点 find tr each function v
  • 在自定义对象中映射 JSON 对象

    我一直在搜索是否可以获取 JSON 字典或数组并将其直接映射到属性与 JSON 标签同名的自定义对象中 但我没有找到任何相关信息 我一直在手动解析 JSON 字典 如下所示 id deserializedObj nil id jsonObj
  • strings.xml 中的 Android 变量

    我在某处读到如何在 XML 文档中使用变量 他们说这很简单 我想也是如此 我在 Android strings xml 文件中成功地使用了它 我一整天都这样使用它 直到突然 android 停止解析它并停止将它视为变量 我这样使用它
  • 伊德里斯统一意外失败

    我正在尝试在 Idris 中创建一个所谓的可判定解析器 起初我只是想解析自然数 但遇到了一个意想不到的问题 生成它的代码的最小示例如下 data Digit Char gt Type where Zero Digit 0 One Digit
  • 在 Python 中解析 TCL 列表

    我需要在双括号上拆分以空格分隔的 TCL 列表 例如 OUTPUT 172 25 50 10 01 01 Ethernet 172 25 50 10 01 02 Ethernet Traffic Item 1 172 25 50 10 01
  • HtmlAgilityPack 删除选项结束标签

    我正在使用 HtmlAgilityPack 我使用以下字符串创建 HtmlDocument 和 LoadHtml
  • 有关如何解析自定义文件格式的提示

    抱歉标题含糊 但我真的不知道如何简洁地描述这个问题 我创建了一个 或多或少 简单的领域特定语言 http en wikipedia org wiki Domain specific language我将用它来指定应用于不同实体的验证规则 通
  • Prolog - DCG 解析器,带有来自文件的输入

    作为项目的一部分 我需要编写一个解析器 它可以读取文件并解析为我可以在程序中使用的事实 文件结构如下所示 property el1 el2 我最终想要的是 property el1 property el2 我这样读我的文件 main op
  • 使用 Parsec 解析数据并省略注释

    我正在尝试编写一个 Haksell Parsec 解析器 它将文件中的输入数据解析为 LogLine 数据类型 如下所示 Final parser that holds the indvidual parsers final Parser
  • 为不同部分设置 rmarkdown 选项卡颜色

    我想用 Rmarkdown 创建一个 html html 应包含彩色选项卡 根据来自的答案这个问题 https stackoverflow com questions 55276670 coloring tabs in rmarkdown我
  • C++字符串解析思路

    我有另一个程序的输出 它更适合人类可读而不是机器可读 但无论如何我都会解析它 没什么太复杂的 然而 我想知道在 C 中执行此操作的最佳方法是什么 这更像是一个 一般实践 类型的问题 我研究了 Boost Spirit 甚至让它发挥了一些作用
  • 接受 05/05/1999 和 5/5/1999 等的日期时间解析

    有没有一种简单的方法来解析可能为 MM DD yyyy M D yyyy 或某种组合的日期 即 在一位数字的日期或月份之前 零是可选的 要手动执行此操作 可以使用 String dateFields dateString split int
  • JSON 解析为 Java - Android 应用程序

    我需要在 Java Android 应用程序中解析 json 字符串的帮助 JSON 文件的文本 data columns location id name description latitude longitude error type
  • 如何使用 Quarkus 记录 com.fasterxml.jackson 错误?

    我使用 Jackson 检查和数据绑定 REST API 的输入 JSON 并且我想在输入与输入不匹配时记录错误 Valid约束 但是 异常会作为Response通过 API 但不会出现在 Quarkus 的日志中 我如何记录 Jackso
  • Xcode 6.3 Parse SDK 1.7.1 PFTableViewCell 错误“具有不兼容的类型”

    My code override func tableView tableView UITableView cellForRowAtIndexPath indexPath NSIndexPath object PFObject gt PFT

随机推荐

  • ChartJS 3.0 中的generateLegend() 发生了什么?

    我的理解是3 0版本已经贬值了 是否有其他方法可以轻松完成图例的定制 是的 有一种非常简单的方法可以使用以下命令向 ChartJS 3 5 添加自定义图例plugins 下面是它如何工作的示例 创建 DOM 结构以支持新的图例和 Chart
  • 如何在Python中将日期时间转换为字符串?

    我想用这段代码制作折线图 df pd DataFrame from dict sentencess sentencess publishedAts publishedAts hasil sentimens hasil sentimens d
  • 将对 Laravel Controller 的请求路由到正在运行的 WebSocket 服务器

    情况 有一个长时间运行的任务需要异步启动 此任务的细节实际上并不是那么重要 基础知识是要配置多个虚拟机和复杂的网络设置 并且这是由将在不同服务器上运行的 python 脚本处理的 我们决定使用 WebSockets 在 Web 服务器和客户
  • 在Dispose(bool)方法实现中,不应该将成员设置为null吗?

    没有任何讨论的指南 注释 文章IDisposable模式建议应该将内部成员设置为null in the Dispose bool 方法 特别是如果它们是占用内存的野兽 在调试内部基准测试工具时 我开始意识到它的重要性 过去发生的情况是 有一
  • 验证 XSD 本身

    谁能告诉我如何验证 XSD 文件本身 不是针对 XSD 的 XML 我检查了许多论坛和网站 包括 SO 其中大多数都引用了某些或其他在线验证器 但这对我们来说不是一次性检查 我们的应用程序涉及使用 XSD 的 XSL 转换 因此我们需要确定
  • 检测两个数字相加时是否发生无符号整数溢出

    这是我的实现 用于检测尝试添加两个数字时是否发生无符号整数溢出 我的系统上 unsigned int UINT MAX 的最大值是 4294967295 int check addition overflow unsigned int a
  • 允许 VB.NET 应用程序将 Excel 文件转换为数据表

    我的 VB NET 应用程序目前允许我将 CSV 文件转换为数据表 这要归功于以下提供的代码David在这个问题中我发布了 上一个问题 现在我尝试允许将 XLSX 文件导入到数据表中 目前代码如下所示 Private Function Co
  • 在 PostgreSQL 中,关于 citext 性能的奇怪问题?

    In PostgreSQL 手册它说citext只是一个实现的模块TEXT调用的数据类型LOWER citext模块提供了不区分大小写的字符串类型 citext 本质上 它在比较值时在内部调用 lower 否则 它的行为几乎与文本完全相同
  • 如何在iOS中动态解析JSON

    我们使用了第三方服务 它提供了一个 JS 文件 js文件发起http请求 得到一个json 我们解析json 得到了我们想要的内容 但是json格式总是在变化 有没有办法解析 json 但不更新我们的应用程序 不断更改架构听起来非常愚蠢 但
  • 使用 IN 和 python 列表构建 SQL 查询字符串

    我建立了一个对熊猫感兴趣的价值观列表 table1 pd read csv logswithIPs csv cips data dash ip unique tolist print cips 10 111 111 111 111 123
  • Hibernate、iBatis 还是其他?

    在我的项目中 我需要在运行时在数据库之间切换 我尝试使用 Hibernate 但陷入了一个需要将对象与数据库中的表映射的地方 问题是 我有几个带有前缀的表 documents2001 documents2002 据我所知 我无法在运行时将类
  • 如何用 R 绘制风向和风速(速度图)

    基本上我有两个矩阵 u和v 的列表 其中包含经度和纬度方向的风速 以及包含坐标的向量x和y 我想制作一张带有指向结果方向的箭头的地图 其大小与风速成正比 这个问题之前有人问过 http www mail archive com 电子邮件受保
  • plotly.js 中是否可以有水平颜色条

    我正在plotly js 中使用等值线图 有没有办法让颜色条比例在图表底部水平显示 而不是沿右侧或左侧垂直显示 作为参考 请查看 Plotly 站点上给出的第一个示例https plot ly javascript choropleth m
  • dw、db 和 是什么意思? (问号)TASM 结构中的意思是什么?

    我是装配新手 现在我想弄清楚dw db and 意思是在一个struc 例如这里 struc segment descriptor seg length0 15 dw base addr0 15 dw base addr16 23 db f
  • 如何让 R 接受自签名证书

    我有使用 RGoogleAnaytics 包的以下代码 require RGoogleAnalytics client id lt XX client secret lt YY token lt Auth client id client
  • 选择 Linq 分组依据的特定列

    我有一个嵌套的 ListView 有点像这个 http mattberseth com blog 2008 01 building a grouping grid with html 以及以下 Linq 查询 var query from
  • PHP foreach() 仅返回最后 50 项

    我当前正在使用以下 PHP 代码来返回 htm 文件的输出并对其进行格式化
  • 我可以从 .gradle 文件中的 groovy 方法调用 gradle 任务吗?

    我在 gradle 中有一个非常规的构建脚本 它可以循环编译项目 更改为标准 gradle 构建需要几周的时间 所以现在不会发生这种情况 问题是我想停止在脚本中使用 ant 并转而仅使用 groovy gradle 问题是如何更改复制等任务
  • 使用 VBA for Excel 从大范围单元格中删除“额外”空格(超过 1 个)的更快方法

    如何从包含文本字符串的大范围单元格中更快地删除多余空格 假设有 5000 个细胞 我尝试过的一些方法包括 For Each c In range c Value Trim c Value Next c and For Each c In r
  • 你会如何解析 Markdown? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 编辑 我最近了解了一个名为