用 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>(?|...)
组,里面的所有备选方案都有具有相同索引的组。
Notepad++ 设置和演示:
刚刚尝试找到替代方案,我想我找到了..
查找内容:(?<=Ani|Hu|Pl|Fu) (?=\w+)
替换为:nothing
我有一个用空格和 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>(?|...)
组,里面的所有备选方案都有具有相同索引的组。
Notepad++ 设置和演示:
刚刚尝试找到替代方案,我想我找到了..
查找内容:(?<=Ani|Hu|Pl|Fu) (?=\w+)
替换为:nothing