当前位置: 代码迷 >> C# >> 一个正则表达式工作步骤的有关问题
  详细解决方案

一个正则表达式工作步骤的有关问题

热度:65   发布时间:2016-05-05 04:10:30.0
一个正则表达式工作步骤的问题
谁告诉我以下正则表达式匹配是如何一步一步进行的,谢谢。


            string input = "PRIVATE11xxPRIVATE22xx123PRIVATE33";
         
            string pattern = @"(?<Pvt>PRIVATE)?(?(Pvt)(\d+)|([^\d]+))";

            string publicDocument = null, privateDocument = null;
            
            foreach (Match match in Regex.Matches(input, pattern))
            {
                if (match.Groups[1].Success)
                {
                    privateDocument += match.Groups[1].Value + "\n";
                }
                else
                {
                    publicDocument += match.Groups[2].Value + "\n";
                }
            }
             

            Console.WriteLine("Private Document:");
            Console.WriteLine(privateDocument);
            Console.WriteLine("Public Document:");
            Console.WriteLine(publicDocument);

------解决思路----------------------
一个正则表达式是有可能匹配到一个字符串里面的多个结果的~
如正则表达式A, 字符串ABACAA,那么就会匹配到4个~~~
然后然后循环输出
这就是上面的~代码~~的意思
 
------解决思路----------------------
(?<Pvt>PRIVATE)?(?(Pvt)(\d+)
------解决思路----------------------
([^\d]+))
(?<Pvt>PRIVATE)匹配PRIVATE字符串,并且可以通过组Pvt来获取
(?<Pvt>PRIVATE)?这个后面的?代表前面括号内的可以出现一次或0次
(?(Pvt)(\d+)
------解决思路----------------------
([^\d]+))  这是组合组了