问题
我正在尝试在 Pandoc 工作流程中编写一个简单的中间步骤。我有一个.docx
的原始文档,我正在使用--track-changes
开关将其转换为.md
(有关更多信息,请参阅 Pandoc 阅读器选项)以生成一个 markdown 文件,该文件将 MS 单词插入/删除/注释包装在span
标签中,例如
[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 文件上运行正则表达式查找和替换,该文件有效地"接受"插入和删除,但保留注释跨度。(当我转换回.docx
时就是这样,我有一个干净的.docx
文件,只有注释。
我尝试过什么
我已经能够接受所有插入范围并删除所有删除范围,但前提是正文文本不超过一行。我尝试在新行之间匹配太多,我无法弄清楚如何仅匹配确切的文本。
以下正则表达式匹配几乎所有删除内容,然后我可以将其替换为任何内容:
查找:[(.*?)]{.deletion(.|n)*?}
取代:
插入也是如此,然后我可以使用反向引用来保留文本但删除跨度:
查找:$1
替换:[[^[]*?]{.deletion.*?}
但是,正如您在此处看到的那样,这些模式匹配得太多了。
如果有任何不清楚的地方,请告诉我。我今天一直在研究这个问题,很难清楚地解释这个问题!提前谢谢。
以下正则表达式应与删除片段匹配:
([^[]*?)
插入的正则表达式基本相同,除了您必须有一个捕获组[([^[]*?)]{.insertion.*?}
:
CC_16