如何在同一个正则表达式中使用捕获的组

bit*_*ver 6 regex intellij-idea android-studio

mFoo = foo;
mBar = bar;
// convert to
this.foo = foo;
this.bar = bar;
Run Code Online (Sandbox Code Playgroud)

如何使用正则表达式来处理这种替换?请帮忙.这是我在Android Studio中使用的方法(IntelliJ IDEA)Edit -> Find -> Replace in Path

Text to find: m([A-Z])([A-Za-z0-9]+) = L$1$2
Replace with: this\.L$1$2 = L$1$2
Run Code Online (Sandbox Code Playgroud)

更新

L上面是一个错字.应该\L根据JetBrains的文件

Sim*_* R. 17

您可以使用带有反向引用的模式,并将"="后的最后几个字分组:

m(\p{Alpha})(\w+) = (((?i)\1)\2)
Run Code Online (Sandbox Code Playgroud)

在你的评论之后,我知道你也有小写/大写字符的问题.所以尝试这种模式(我也简化了正则表达式):

this\.L$1$2 = $3
Run Code Online (Sandbox Code Playgroud)

这个替换字符串:

mContext = context
Run Code Online (Sandbox Code Playgroud)

所以使用输入文本的示例:

this.LContext = context
Run Code Online (Sandbox Code Playgroud)

你得到这个:

this\.$3 = $3
Run Code Online (Sandbox Code Playgroud)

我不知道你的text/replace字符串中指定的"L"是你的拼写错误还是其他错误,但如果它是这样你可以用以下方式更改"替换字符串":

this.context = context
Run Code Online (Sandbox Code Playgroud)

所以你可以得到这个:

m(\p{Alpha})(\w+) = (((?i)\1)\2)
Run Code Online (Sandbox Code Playgroud)

如果这对您有帮助,请告诉我!