用 OR 条件替换正则表达式

Regex replacement with OR condition

我有一个用空格和 OR 条件分隔的字符串列表 (thousends),例如:

Ani mal|Hu man|Pl ant|Fu ngus

我想去掉空格,但这些字符串在一个巨大的文本 (XML) 中,有很多故意的空格。所以我不能只删除所有空格。我试过了:

(Ani) (mal)|(Hu) (man)|(Pl) (ant)|(Fu) (ngus) 用。。。来代替:

显然这是行不通的。我知道我可以用任何编程语言做到这一点,但我想看看是否有办法只用 Regex 来做到这一点(例如在 Notepad++ 中)。

当每个备选方案有固定数量的组,并且您想要使用 reset 索引引用每个备选方案中捕获的值(组)时,您可以利用 branch reset group:

(?|(Ani) (mal)|(Hu) (man)|(Pl) (ant)|(Fu) (ngus))
^^^  1     2  ^ 1     2  ^  1    2  ^  1     2  ^    

替换为</code>。由于 <code>(?|...) 组,里面的所有备选方案都有具有相同索引的组。

参见regex demo online

Notepad++ 设置和演示:

刚刚尝试找到替代方案,我想我找到了..
查找内容:(?<=Ani|Hu|Pl|Fu) (?=\w+)
替换为:nothing