使用IDE的正则表达式替换功能

1,111 阅读1分钟

为建立中文知识库加块砖        ——中科大胡不归

问题描述

Android Studio、Rider、Visual Studio等IDE除了基本的查找和替换功能,还都提供了正则表达式查找和替换功能。对于熟稔正则表达式的开发者,可以提供高效的查找和替换操作。 对于不熟正则表达式(每次靠现查)的我是如何解决正则表达式搜索的呢?以Rider软件为例,比如我们需要找到某类中11个形如RaisePropertyChanged(RenWu);,并替换为RaisePropertyChanged(nameof(RenWu));

        public string RenWu
        {
            get => _renWu;

            set
            {
                _renWu = value;
                Config.SetValue("RenWu", value);
                RaisePropertyChanged(RenWu);
            }
        }

解决办法

1 实现查找

分解目标字符串,目标字串有固定的RaisePropertyChanged( );和变化的RenWu组成。所以正则表达式的基底字串就是RaisePropertyChanged( );。变化部分是长度不定的字符,即.*.是代表任意字符,*是代表任意长度。

查找效果 查找效果

2 实现替换

替换需要取出变化的部分,加个括号取出,加个$1获取:

查找:
RaisePropertyChanged((.*));

替换:
RaisePropertyChanged(nameof($1));

但似乎有点问题: 多了一组括号

由于括号在正则表达式里面的特殊含义,所以此处需要加转义字符:

查找:
RaisePropertyChanged\((.*)\);

替换:
RaisePropertyChanged(nameof($1));

效果预览 效果预览

参考文章

1、IDEA 搜索正则表达式替换