1.常用通配符:
https://juejin.im/post/5cee4f6c518825332550cd9d
https://docs.microsoft.com/en-us/dotnet/standard/base-types/regular-expression-language-quick-reference
【1】//Matches the previous element zero or more times.
Quantifier Description Pattern Matches
. //匹配任意字符(匹配次數 n==0||1) a.c ac,abc
//查找以a開頭,以c結束的字符串
.* //匹配任意字符任意次數 a.*c a1b23c
eg: input search_result
a.*c abcabcabcabc //匹配以“a”開始,以"c"結束的任意字符串
//(僅以最後一次出現字符“c”爲結束)
? //非貪婪運算符
.*? //僅以第一次出現結束字符爲終止
\ //轉義運算符
eg: input search_result
fun\(.*\) fun(type1,type2,...,typen)
//由於"()"爲取值運算符,匹配"("和“)”,需要進行轉義運算
回到我們最初的目的實現查找特定函數fun_name,並替換其中的某個參數int2爲int3
fun_name(char,int1,int2,double1)
正則表達式的查找方式:
fun_name\(.*\) //轉義括號,匹配所有fun_name()函數
正則表達式的查找替換
查找:fun_name\((.*)\) //(),取值運算,做查找替換是可以用 $1 取值
替換:fun_name($1) //替換不需要做轉義運算
//此語句並沒有替換任何字符
查找:fun_name\((.*?),(.*?),(.*?),(.*?)\) //?:第一次遇到","就會停止
如果寫成 fun_name\((.*),(.*),(.*),(.*)\) //沒有"?"運算符
$1=“char,int1,int2,double1”
而不是 $1=“char”
正確寫法:
查找:fun_name\((.*?),(.*?),(.*?),(.*?)\)
替換:fun_name($1,$2,int3,$4)