长话短说,我试图清理"来自绘图程序的脚本文件,用于播放。该程序(ArtRage for iPad)将所有笔划记录到XML脚本文件中。然后,您可以导出此文件并在iPad或桌面版应用程序中回放整个绘图过程。我想清除所有"撤消"操作
绘图"步骤"看起来像这样:
<StrokeEvent>
<StrokeHeader>
<EventPt> Wait: 0.428s Loc: (806.416, 439.849) Pr: 1 Ti: 1 Ro: 0 Fw: 1 Bt: 0 Rv: NO Iv: NO </EventPt>
<Recorded> Yes </Recorded>
</StrokeHeader>
Wait: 0.000s Loc: (805.622, 437.537) Pr: 1 Ti: 1 Ro: 0 Fw: 1 Bt: 0 Rv: NO Iv: NO
</StrokeEvent>
我已将它缩短了一点,但整个内容都包含在开始和结束标签中。
撤消操作如下所示:
Wait: 0.661s EvType: Command CommandID: Undo
它就在您撤消的步骤之后。
所以...我想直接搜索那些在其后立即执行撤消操作的完整标记实例,然后删除完整标记和撤消行。
我认为正则表达式是一个很好的方法,但我不太了解它。我正在网上看一个正则表达式课程,但它会让我稍微提升一下,这个特定的解决方案可以更快地派上用场。我已经能够选择完整的标签,但我无法选择那些跟随它们的撤销声明的标签。我尝试使用向前看但是选择了所有前面的标签。
这是我能得到的最接近的(原谅新手代码):
(<StrokeEvent>[\s\S]+?</StrokeEvent>)\nWait:.*Undo
我认为&#34;?&#34;在&#34; +&#34;之后将启用惰性选项并在第一次出现时停止,但我可能理解错误。
无论如何,感谢您给我的任何提示!