在 IntelliJ 的搜索正则表达式中引用捕获组

Referencing a capture group inside the search regex of IntelliJ

浅谈IntelliJ、WebStorm等的Replace in Path工具,使用正则表达式

我知道您可以在 IntelliJ 中的 replacement 字符串中引用捕获组,例如 $n,其中 n 是捕获组的索引.

例如,您可以执行以下查找替换操作:

Find:    <Foo key=\{([a-z]+)\.key\} />
Replace: <Bar color=\{.color\} />

这会改变这些行:

<Foo key={something.key} />

进入:

<Bar color={something.color} />

但是如果你想像这样找到成对的元素怎么办:

<Foo key={something.key} />
<Bar color={something.color} />

并将它们替换为:

<FooBar el={something} />

如何在 search 字符串中引用捕获组?

我尝试了很多选项,例如:

<Foo key=\{([a-z]+)\.key\} />\s*<Bar color=\{\.color\} />

参考 () 似乎不起作用。

我刚刚通过尝试弄明白了。在 search 字符串中,您可以使用 \n 引用捕获组,其中 n 是索引。

在这种情况下,搜索字符串必须是:

<Foo key=\{([a-z]+)\.key\} />\s*<Bar color=\{\.color\} />

然而,替换字符串必须是:

<FooBar el=\{\} />

奇怪的是它们会被不同地引用。