目標:
有一個字符串如: QString str("test1(97) test2(88) test3(90)"); 希望將小括號內的數字全部替換成good。 替換後的字符串變成test(good) test2(good) test3(good)。
方法:
由於小括號裡的內容都不一樣,很顯然用正則表達式最合適。恰好QString的replace函數是支持正則表達式的。
replace(QRegExp("表達式"),"(新字符串)");
測試:
QString str("test1(97) test2(88) test3(90)");
QRegExp reg("\\(.*\\)");
reg.setMinimal(true); //默認為false,貪婪模式
str.replace(reg,"(good)");
正則表達式的含義
\\( 匹配左括號
.* 匹配任意字符任意個數(. 匹配\r \n 之外的單個字符 *匹配0次或多次)
\\) 匹配右括號
結果:
說明:
需要調用reg.setMinimal(true); 因為默認值是false表示使用貪婪模式,此模式下會一直匹配到最後一個 ) 才停止,這樣整個字符串只識別到一對括號,最終結果變成test1(good)。