pandoc-generate markdown文件中非贪婪的正则表达式匹配太多[重复]

问题描述 投票:1回答:1

这个问题在这里已有答案:

问题

我正在尝试在Pandoc工作流程中编写一个简单的中间步骤。我在.docx中有一个原始文档,我使用.md开关转换为--track-changes(有关更多信息,请参阅Pandoc reader options)以生成包含span标记的MS字插入/删除/注释的降价文件,例如:

[Insertion text]{.insertion id="1" author="Jamie Bowman" date="2019-04-01T11:05:00Z"}

[Deletion text]{.deletion id="1" author="Jamie Bowman" date="2019-04-01T11:05:00Z"}

[Comment body]{.comment-start id="1" author="Jamie Bowman" date="2019-04-01T11:05:00Z"}[]{.comment-end id="1"}

我想在markdown文件上运行regexp查找和替换,该文件有效地“接受”插入和删除但留下评论范围。 (这是当我转换回.docx时,我有一个干净的.docx文件,只有注释。)

我试过的

我已经能够接受所有插入跨度并删除所有删除跨度,但仅当正文文本不携带多个行时。我尝试匹配新行匹配太多,我无法弄清楚如何只匹配确切的文本。

以下正则表达式匹配几乎所有删除,然后我可以替换为空:

发现:\[(.*?)\]{.deletion(.|\n)*?}

替换:

插入相同,然后我可以使用反向引用来保留文本但删除跨度:

发现:\[(.*?)\]{.insertion(.|\n)*?}

替换:$1

但是,模式匹配太多了,你可以看到here

如果有任何不清楚的地方,请告诉我。我今天一直在努力解决这个问题,很难明白地解释这个问题!提前致谢。

regex markdown pcre pandoc
1个回答
0
投票

以下正则表达式应与删除片段匹配:

\[[^[]*?\]{\.deletion.*?}

插入的正则表达式大多是相同的,除了你必须有一个捕获组([^[]*?\)

\[([^[]*?\)]{\.insertion.*?}

© www.soinside.com 2019 - 2024. All rights reserved.