2013-08-28 233 views
0

我有以下行正則表達式替換括號內的內容忽略嵌套括號

(textMsg).Style.set_BackgroundColor(Color.FromArgb(0, 0, 0)); 

,我希望得到的是

(textMsg).Style.BackgroundColor = Color.FromArgb(0, 0, 0); 

我試着用下面的正則表達式模式,但沒有運氣

set_(.*)\((([^()]*|(?R))*)\) 

我會很感激任何建議。

感謝

+0

'(@R)'是一個Perl/PCRE特有的遞歸整體模式表達式。 .NET也處理遞歸,但使用不同的語法。請參閱:[正則表達式嵌入{{匹配](http://stackoverflow.com/a/6002694/433790)並用大括號括起花括號。 – ridgerunner

回答

0

你可以代替試試這個:

set_([^(]*)\((.*)\) 

這在(和方法調用成組`$ 2 )之間組$1和任何捕捉屬性名set_後,所以你可以使用像這樣的替換字符串:

$1 = $2 

Regex 101 Demo

您的表達式無效,因爲您有不平衡的圓括號和未識別的標記,所以無法編譯。