我正在尝试在Pandoc工作流程中编写一个简单的中介步骤。我在.docx
中有一个原始文档,我正在使用.md
开关将其转换为--track-changes
(有关更多信息,请参见Pandoc reader options)以生成带有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文件上运行一个regexp查找并替换它,该文件可以有效地“接受”插入和删除,但保留注释范围。 (因此,当我转换回.docx
时,我有一个干净的.docx
文件,仅包含注释。)
我已经能够接受所有插入范围并删除所有删除范围,但是仅当正文不超过一行时才可以。我尝试在新行之间进行匹配的尝试太多,因此我无法找出仅匹配确切文本的方法。
以下正则表达式几乎匹配所有删除的内容,然后我什么都可以替换掉:
查找:\[(.*?)\]{.deletion(.|\n)*?}
替换:
与插入相同,然后可以使用向后引用保留文本但删除跨度:
查找:\[(.*?)\]{.insertion(.|\n)*?}
替换:$1
不过,模式匹配得太多,如您所见here。
请让我知道是否有任何不清楚的地方。我今天已经做了很多工作,很难一目了然地解释这个问题!预先感谢。
答案 0 :(得分:0)
以下正则表达式应与删除片段匹配:
\[[^[]*?\]{\.deletion.*?}
插入的正则表达式基本相同,除了必须具有捕获组([^[]*?\)
:
\[([^[]*?\)]{\.insertion.*?}