查找
在vscode中,想要使用正则查找换行符,使用\s是无法匹配到\n的,需要指定[\n]来匹配,用例子说明比较直观。
现在有一个文本:
#include <stdio.h>
void func3();
void func()
{
return 0;
}
void func2(){
return 1;
}
要想匹配:
void func()
{
和
void func2(){
你要构造的正则表达式为:void[\s]+a-zA-Z0-9_[\s\n]{
\s可以匹配到任意空白符\n匹配换行符, *表示匹配0次以上。
替换
正则匹配到多项之后,想替换怎么办呢?
那么就可以用括号将匹配的项进行分组。$1 $2,…表示匹配到的第一组,第二组…
回到上面的例子,我想得到下面的目标文本,要怎么替换呢?
#include <stdio.h>
void func3();
void func(int a)
{
return 0;
}
void func2(int a){
return 1;
}
可以知道,就是在括号里面加上"int a", 暴力的方式可以查找:() 替换的文本为:(int a),那有一个问题是会把第二行的void func3(); 替换成void func3(int a);
用正则怎么操作呢?上面我们已经得到了匹配目标的正则表达式:void[\s]+[a-zA-Z]()[\s\n]{
现在需要将这个表达式加上括号进行分组, 目标文本是在括号里面填上int a, 那么我们就可以将左括号及左括号左边的内容分为一组,右括号及右括号右边的内容为一组。
得到的表达式为:(void[\s]+[a-zA-Z0-9_]()()[\s\n]{)
这样就可以用$!代表第一组的内容, $2 代表第二组的内容。
在替换文本一栏就可以写上:$1int a$2 完成替换。