待替换代码如下

1
(ledger.getPrinciple().intValue() * 100)

需要替换成

1
((int)(ledger.getPrinciple() * 100))

我们需要怎么做呢?

  1. ctrl + r 打开文件替换
  2. 勾选替换选项Regex
  3. 待匹配行正则表达式逐步分解
  4. 首先我们看到有三个括号,一个* 100,于是有了\(\(\)\(\) \* 100\),特殊字符一定要用转义符
  5. 上述表达式肯定匹配不到内容的,需要加上字母/符号的匹配,\(.+\(\).+\(\) \* 100\)
  6. 正则表达式已经匹配上,但我们还要将我们需要的字符串取出来,也就是ledger.getPrinciple(),用小括号括上,于是有了\((.+\(\)).+\(\) \* 100\)
  7. 替换后代码:((int) ($1 * 100)) , $1 被替换成第6步里面的那一串ledger.getPrinciple()

简单解释下:

  • 不带\(的第一个括号是将其提取,后会在$1(依次类推 $2,$3…)被替换
  • 其他没有什么特别的,需要稍微有一些正则匹配基础知识
  • 重点是在待替换的字符串中找到特殊的关键字符,比如上述的(), * 100