想法查找并替换为捕获组

Dmi*_*din 4 intellij-idea android-studio

我正在努力寻找

 @BindView($ResId) internal lateinit var $FieldName: $Class
Run Code Online (Sandbox Code Playgroud)

并替换为

private val $FieldName by bindView<$Class>($ResId)
Run Code Online (Sandbox Code Playgroud)

使用 Intellij 查找和替换功能执行此操作的语法是什么?

Mar*_*cel 8

首先,我们必须激活“查找和替换”栏中的正则表达式复选框(如果它只影响当前文件),或者在“替换路径”对话框中激活整个项目:

在此输入图像描述

在“查找”文本字段中使用此正则表达式和 3 个捕获组应该可以工作:

@BindView\((.*)\) internal lateinit var (.*): (.*)
Run Code Online (Sandbox Code Playgroud)

现在我们可以在替换$1文本字段中使用$ResId、$2$FieldName 和$3$Class的变量:

private val $2 by bindView<$3>($1)
Run Code Online (Sandbox Code Playgroud)

  • 使用正则表达式“foo .* bar”,您只能检查输入是否匹配,但无法从输入中提取任何值。如果要匹配正则表达式并从中提取值,则必须使用捕获组,用括号表示。因此,如果正则表达式“foo (.*) bar”与输入匹配,您还可以提取 foo 和 bar 之间的值。捕获组按其出现顺序从 1 开始编号。如果输入匹配,则 $0 是整个字符串。 (2认同)