如何用Oxygen XML Editor批量查找替换功能定位不含指定内容的文件
批量识别不含特定标签的METS文件(Oxygen XML Editor)
方案1:用过滤功能替代正则(最简单高效)
- 打开「Find/Replace in Files」,直接输入要排除的标签内容:
<mods:genre authority="aat">theses</mods:genre>,不要勾选正则选项。 - 执行搜索,得到所有包含该标签的文件集合。
- 切换到「Project」视图,选中所有待检查的METS文件,右键选择Compare with Found Files → Select Files Not in Found Set,瞬间就能筛选出不含目标标签的文件。
方案2:修正正则表达式(适合必须用正则的场景)
你之前的正则因为回溯效率问题,在处理大文件时会无匹配结果,换成下面的写法:
(?s)\A(?!.*<mods:genre\s+authority="aat">theses</mods:genre>).*\z
正则说明:
(?s):开启单行模式,让.能匹配换行符(覆盖整个文件内容)\A:匹配文件开头位置(?!.*...):否定前瞻,确保整个文件里找不到指定的标签.*\z:匹配文件剩余内容直到结尾
如果标签里的属性前后可能有多余空白(比如换行、制表符),用这个更兼容的版本:
(?s)\A(?!.*<mods:genre\s+authority\s*=\s*"aat"\s*>theses</mods:genre>).*\z
操作步骤:
- 在「Find/Replace in Files」中勾选「Regular expression」
- 粘贴上面的正则到「Find」框
- 确认「Search in」选的是Content
- 选择要扫描的文件目录,点击「Find All」即可得到目标文件列表
内容的提问来源于stack exchange,提问作者G.W. Swicord
相关产品推荐
相关产品推荐

