【问题标题】:Regex: table line matcher正则表达式:表行匹配器
【发布时间】:2022-07-08 01:03:51
【问题描述】:

我想使用正则表达式解析表格行。

输入

   |---|---|---|
|---|---|---|

到目前为止,我已经想出了这个正则表达式:

/^(?<indent>\s*)\|(?<cell>-+|)/g

Regex101 链接:https://regex101.com/r/wzMYxd/1

但是这个正则表达式不完整。

这只会找到第一个单元格--|,但我想找到以下所有单元格为不同的----|

问题:我们可以使用正则表达式捕获以下具有相同模式的单元格吗? 预期输出:具有匹配单元格数组的组:[“---|”、“----|”、“---|”]

注意:- 的数量不需要固定

【问题讨论】:

  • ^(?&lt;indent&gt;\h*)|\G\|(?&lt;cell&gt;-+) 你使用什么工具/语言怎么样?
  • 哇,太棒了。它按预期工作。让我再尝试一些案例。我正在使用nodejs进行解析。
  • 我怀疑它在 JS 中是否有效,也许足以使用 \|(?&lt;cell&gt;-+)|^(?&lt;indent&gt;[\t ]*)
  • true,第一个不适用于 js :(
  • 这是逐行处理还是多行字符串处理?将比赛相互链接起来很重要吗? (第二个模式不链接匹配项(没有\G)。在 JS 中有 sticky y 标志用于从开始链接匹配项,但仅在单行输入时才有意义。

标签: node.js regex markdown cell


【解决方案1】:

首先检查一下,如果该行与模式(regex101 demo)匹配。

^[ \t]*\|(?:-+\|)+$

如果匹配,提取indentcell

\|(?<cell>-+)|^(?<indent>[\t ]*)

See demo at regex101(右侧说明)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-24
    • 2013-09-22
    • 1970-01-01
    • 1970-01-01
    • 2016-04-20
    相关资源
    最近更新 更多