110kV1#母分開關由運行改熱備用(110kV1#母分備自投由信號改跳閘(1區),110kV1#母分保護由跳閘改信號(1區)),110kV1#母分開關由運行改熱備用(110kV1#母分備自投由信號改跳閘(1區),110kV1#母分保護由跳閘改信號(1區))
上面符串括號都是半角中文狀態,括號裡面可能會嵌套N個括號和其他字符串,上面只是個例子
要求寫出一對正則表達式,匹配最外層的括號裡面的所有內容
如上面可以匹配到的字符串如下:
(110kV1#母分備自投由信號改跳閘(1區),110kV1#母分保護由跳閘改信號(1區))
(110kV1#母分備自投由信號改跳閘(1區),110kV1#母分保護由跳閘改信號(1區))
會匹配到兩個字符串
static void RegexBalance()
{
string txt = @"110kV1#母分開關由運行改熱備用(110kV1#母分備自投由信號改跳閘((1區)),110kV1#母分保護由跳閘改信號(1區)),110kV1#母分開關由運行改熱備用(110kV1#母分備自投由信號改跳閘(1區),110kV1#母分保護由跳閘改信號(1區))";
string patten = @"\([^\(\)]*(((?'op'\()[^\(\)]*)+((?'-op'\))[^\(\)]*)+)*(?(op)(?!))[^\(\)]*\)";
Regex.Matches(txt, patten).Cast<Match>().ToList().ForEach(x =>
{
Console.WriteLine(x.Value);
});
}