正则表达式搜索并用条件替换:在 Notepad++ 中有效,在 Powergrep 中无效?

Regex search and replace with conditionals: works in Notepad++, doesn't in Powergrep?

我在 Notepad++ 中使用这个正则表达式来搜索和替换多个单词。

(good)|(great)|(fine)

(?1bad)(?2worse)(?3not)

问题是,它在 Powergrep 中不起作用,有什么办法可以改变它吗? 问题是,Notepad++ 有限制长度或正则表达式,而 Powergrep 没有,它还支持正则表达式列表。

PowerGREP manual 中从未提及用条件替换。我建议您采用一种通用的方法,只需 3 个步骤即可解决 N 搜索和替换 overall(显然,如果您只有 3 个单词要替换你可以先一个一个替换它们):

第一步(添加标记)

(F_1)|(F_2)|(F_3)|...|(F_n)

{[R_1]}{[R_2]}{[R_3]}...{\n[R_n]}

其中 (F_1, ..., F_n) 分别是要用术语 (R_1, ..., R_n) 替换的词(或正则表达式)。

在你的例子中:

(good)|(great)|(fine)

{[bad]}{[worse]}{[not]}

第二步(保持良好)

\{[^\[\]\{\}]+\[([^\[\]\{\}]*)\]\}


第三步(除恶)

\{\[[^\[\]\{\}]*\]\}

null

如果您使用的单词已经包含了弯括号和方括号的使用,并且您不想犯错,则可以使用其他标记(angular 括号、三尖角等等等等)。