程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> c#3-正則表達式提取字符串問題

c#3-正則表達式提取字符串問題

編輯:編程綜合問答
正則表達式提取字符串問題

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);
            });
        }
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved