我有一个长的 Markdown 格式的字符串,它由一个或多个标题的重复部分和多行描述组成,如下所示:
**[Title1](link1) brief description** flag1, flag2
commentary,
occasionally multi-line
---
**[Title2](link2) brief description** flag3, flag4
**[Title3](link3) brief description** flag5, flag6, flag7
commentary
---
...
此顺序偶尔会与其他文本打断,交织---
在下一个标题之间。
我希望使用 JS 的正则表达式来处理它,以便在单独的捕获组中捕获标题、链接、描述和评论。理想情况下,从给出的示例中,我想得到类似的东西:
1st match:
group 1: Title1
group 2: link1
group 3: brief description
group 4: commentary,
occasionally multi-line
2nd match:
group 1: Title2
group 2: link2
group 3: brief description 2
group 4: Title3
group 5: link3
group 6: brief description 3
group 7: commentary
...
我不会撒谎 - 我的正则表达式技能可能需要一些修饰,但是我设法解决了这个问题,将其限制为单个标题(使用类似于 的正则表达式/\*\*\[(.*)\]\((.*)\)\s+(.*)\*\*.*\s+((?:.*\s)*?)?---/g
)。对于未指定数量的它们,我不确定如何将单独的片段收集到简洁的组中,因为无论我尝试什么,我要么得到属于一个项目的标题的单独匹配项,要么第二个和后续的标题与评论。
仅使用正则表达式可以吗?我想避免按项目边界(在这种情况下)拆分**[
并---
从那里进一步切碎,因为这似乎不如单个正则表达式匹配那么优雅。