IntelliJ 中的正则表达式反向引用

2022-08-31 08:19:33

我想使用 IntelliJ 的查找和替换功能来执行以下转换:

// Replace this
model.put('foo', 'bar')
// With this
model['foo'] = bar

我尝试了以下方法:

要查找的文本:替换为:model.put\((.*),(.*)\)model\[\\1\] = \\2

但Intellij似乎不承认并作为反向引用。我也尝试过一个斜杠,但这也不起作用。\\1\\2


答案 1

IntelliJ 用于替换反向引用。$1

来自IntelliJ的帮助:

有关正则表达式及其语法的更多信息,请参阅 java.util.regex 的文档 Back 引用应具有$n,而不是 \n 格式。


答案 2

简而言之,必须使用 to 进行替换反向引用。 语法仅用于搜索中的反向引用。$1$n\1

在 IntelliJ 2016 中,应用内文档具有误导性。以下是完整文档中更好的引用:

如果需要将匹配的子字符串引用到当前正则表达式之外的某个位置(例如,在另一个正则表达式中作为替换字符串),则可以使用美元符号($num,其中 num = 1..n)检索它。

来源:2016.1 正则表达式语法,提示和技巧