2月 16

公司中的一个正则表达式提取的备份,下次遇见只要copy就OK啦

目标字符串

[name:aaa^|^type:bbbb^|^label:cccc^|^value:dfdd],[name:aaa2^|^type:bbb2b^|^label:c2ccc^|^value:d3fdd]

提取方法:

 public static List<Parameter> GetValue(string html)
       {
           string regexString = "\\[(.*?)\\]";
           Regex regex = new Regex(regexString, RegexOptions.Singleline | RegexOptions.Compiled);
           List<string> list = new List<string>();
           var mc = Regex.Matches(html, regexString);
           for (int index = 0; index < mc.Count; index++)
           {
               list.Add(mc[index].Groups[1].Value);
           }
           List<Parameter> result = new List<Parameter>();
           foreach (var item in list)
           {
               Parameter p = new Parameter();
               p.Name = ExtractValue(item, "name");
               p.Value = ExtractValue(item, "value");
               p.Type = ExtractValue(item, "type"); ;
               p.Label = ExtractValue(item, "label");
               result.Add(p);
           }
           return result;
       }

       public static string ExtractValue(string content, string key)
       {
           string pattern = string.Format("{0}\\:(.*?)(\\^\\|\\^|$)", key);
           Regex regex = new Regex(pattern, RegexOptions.IgnoreCase | RegexOptions.Singleline);
           if (regex.IsMatch(content))
           {
               return regex.Match(content).Groups[1].Value;
           }
           return string.Empty;
       }

written by ocean