在用VS做编码开发时,我们常会用到其自带的"查找和替换"这个工具。
关于用正则替换,有一些容易被遗忘的非常有用的功能。比如,正则动态插入并替换。
通常,如果我们要查找源文件中的固定字符“A”,并替换成固定字符“B”,那么简单,只需分别在查找框输入“A”和替换框输入“B”,然后点查找、替换按钮就可以了,这个大家都用熟了。
考虑一下复杂点的,麻烦点的情况:
如果我们要将 “//这是A” 、“//这是B”、“//各种字符”,替换成如下:
/// <summary>
///这是A
/// </summary>
/// <summary>
///这是B
/// </summary>
/// <summary>
///各种字符
/// </summary>
那么就要使用正则来查找,并且,也用正则来替换。
查找“//xxx”的正则表达式,可以这么写://(.{1,}) 大家也可以写成其他样子的,自由发挥,只要能正确匹配查找就可以了。
替换的表达式,先分析一下替换的字符,如下:
/// <summary>
这行是固定字符
/// XXX 这行///后面的XXX是动态的,XXX是从被替换的字符中查找匹配得来,再插入这里的。
/// </summary> 这行是固定字符
由于替换的字符中,有些是动态查找出来,再原样插入并替换回去的,这就需要动态插入的支持。
变态的是,强大得近乎变态的微软制造出的强大而变态的VS自带的“查找和替换”工具,支持正则动态插入!
其表达式如下:
/// <summary>\n/// $1 /// </summary>\n
细心的你,一定一眼就发现了“$1” 这个奇怪的写法,你可能已经猜出它的作用了,没错!它就是//(.{1,})表达式的第1个匹配项,$2是第2个匹配项,$3是第3个匹配项……以此类推。
扩展思考一:那第0个匹配项呢? 扩展思考二:为什么$1后面没有\n
?
因此:
将 //(.{1,}) 填入查找框中。
将 /// <summary>\n/// $1 /// </summary>\n 填入替换框中。
点击查找并替换按钮,就会将源文件中的 //xxx 替换成
/// <summary>
///
xxx
/// </summary>
写到这,大家都已经知道是什么回事,并也知道什么用了。
如果大家还不懂,那就是我写得不够好,还请见谅。