日期:2014-05-17  浏览次数:20692 次

正则高手快来...
string result = "[数字]字符\r\n[数字]字符[n]n";
 n无限大 当然用户不可能输入很多的,怎么匹配输入的字符串是否合法,\r\n是控件取出值的换行符,可以根据\r\n spilt数组


------解决方案--------------------
C# code
string result = "\r[1]手机\r[2]电脑\r[3]母婴用品";
                string match_pattern = @"^((\s|\r)*?(?<text>\[(?<value>\d+?)\][^\s\\]+)(\s|\r)*?)+$";
                Match m = Regex.Match(result, match_pattern);
                if (m.Success)//匹配成功
                {
                    string[] arr = m.Groups["text"].Captures.Cast<Capture>().Select(a => a.Value).ToArray();
                    /*
                     *         [0]    "[1]手机"    string
                            [1]    "[2]电脑"    string
                            [2]    "[3]母婴用品"    string

                     */
                    List<int> _list = m.Groups["value"].Captures.Cast<Capture>().Select(a => int.Parse(a.Value)).ToList();
                    /*
                     *         [0]    1    int
                            [1]    2    int
                            [2]    3    int

                     */
                }