![[Bug]: Markdown parser rejects valid GFM table separator rows with fewer than 3 dashes](https://www.chat-gpts.plus/wp-content/uploads/2026/06/16314-8fe9d5f8.jpg)
[Bug]: Markdown parser rejects valid GFM table separator rows with fewer than 3 dashes
快速结论:此报错发生在 RAGFlow 解析 Markdown 表格时,其分隔行正则表达式要求单元格内必须包含至少 3 个短横线(`-{3,}`),但 GFM 规范允许 1 个或更多。优先排查 deepdoc/parser/markdown_parser.py 第 196 行的正则表达式是否需要放宽限制。
问题场景
用户在使用 RAGFlow 解析 Markdown 文档时触发。具体是在 deepdoc/parser/markdown_parser.py 中的 _is_table_separator_row 方法校验表格分隔行时,将诸如 :--、--: 等有效的 GFM 分隔符判定为无效,导致表格内容被逐行错误地拆分成碎片。
报错原文
is_table_separator_row regex ^:?-{3,}:?$ rejects valid GFM separators like :--, --:, and :---:. Valid tables get fragmented row-by-row.
原因分析
可能原因:代码中的正则表达式 ^:?-{3,}:?$ 被设计为应用于单个单元格(在管道符分割并去除空格后),要求每个单元格至少有 3 个短横线。然而,GFM 规范(GitHub Flavored Markdown)的表格扩展仅要求分隔符单元格包含 一个或多个 短横线。-{3,} 的限制比 GFM 规范更严格,因此像 :--(2 个短横线)这样的有效分隔符会被拒绝。
环境排查
- 检查使用的项目版本,确认是否包含
deepdoc/parser/markdown_parser.py。 - 注意 Markdown 源文档中表格分隔行的格式(如
:--,--:,:-等)。
解决步骤
- 定位文件:打开项目中的
deepdoc/parser/markdown_parser.py文件,找到第 194-196 行附近的_is_table_separator_row方法。 - 修改正则表达式:将方法内部用于校验单个单元格的正则表达式从
-{3,}更改为-+(或-{1,}),使其匹配一个及以上短横线。修改后的正则应为:re.match(r"^:?-+:?$", cell.replace(" ", ""))
验证方法
在修改后,重新运行 RAGFlow 并解析包含多种格式表格分隔行(例如 |:--|--:|:---:|)的 Markdown 文档。确认表格能够被正确解析,不再出现“逐行碎片化”的错误。



