正则表达式搜索并用条件替换:在 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 括号、三尖角等等等等)。
我在 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 括号、三尖角等等等等)。