为建立中文知识库加块砖 ——中科大胡不归
问题描述
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));
效果预览