我正在尝试在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。
如果有任何不清楚的地方,请告诉我。我今天一直在努力解决这个问题,很难明白地解释这个问题!提前致谢。
以下正则表达式应与删除片段匹配:
\[[^[]*?\]{\.deletion.*?}
插入的正则表达式大多是相同的,除了你必须有一个捕获组([^[]*?\)
:
\[([^[]*?\)]{\.insertion.*?}