在等待几个小时就是端午节了,这里预祝各位节日快乐。
这里分享的是几个在C#中常用的正则解析数据写法,其实就是Regex类,至于正则的匹配格式,请仔细阅读正则的api文档,此处不具体说明,谢谢。
开始吧:
1.查询是否存在“订单号”数据的字符串
1 //匹配对象 2 var expl = "[{\"订单号\":2006,\"价格\":888.90,\"下单时间\":\"2016-06-08 17:01\",\"支付状态\":\"已支付\",\"支付时间\":\"2016-06-08 17:10\"},{\"订单号\":2007,\"价格\":999.99,\"下单时间\":\"2016-06-08 17:01\",\"支付状态\":\"已支付\",\"支付时间\":\"2016-06-08 17:10\"},{\"订单号\":2008,\"价格\":999,\"下单时间\":\"2016-06-08 17:01\",\"支付状态\":\"未支付\",\"支付时间\":\"\"}]"; 3 4 //1.查询是否存在“订单号”数据的字符串 5 var isExists = Regex.IsMatch(expl, @"价格"); 6 Console.WriteLine("1.查询是否存在“订单号”数据的字符串"); 7 Console.WriteLine(isExists);
心得:IsMatch方法判断是否存在匹配的项,直接往方法里面填写需要搜索的信息就行。
2.查询一个“价格”(不包含小数部分)
1 //2.查询一个“价格”(不包含小数部分) 2 var m02 = Regex.Match(expl, "\"价格\":\\d+"); 3 Console.WriteLine("\n2.查询一个“价格”(不包含小数部分)"); 4 Console.WriteLine(m02.Value);
心得:Match直接获取匹配项的值
3.查询一个订单“价格”(包含价格的小数部分)
1 //3.查询一个订单“价格”(包含价格的小数部分) 2 var m03 = Regex.Match(expl, "\"价格\":[^,]+"); 3 Console.WriteLine("\n3.查询一个订单“价格”(包含价格的小数部分)"); 4 Console.WriteLine(m03.Value);
心得:使用正则的^匹配数据
4.查询全部订单“价格”
1 //4.查询全部订单“价格” 2 MatchCollection m04 = Regex.Matches(expl, "\"价格\":[^,]+"); 3 Console.WriteLine("\n4.查询全部订单“价格”"); 4 foreach (Match m004 in m04) 5 { 6 Console.WriteLine(m004.Value); 7 }
心得:Matches获取到匹配的集合组
5.查询全部订单“价格”,输出价格信息
1 //5.查询全部订单“价格”,输出价格信息 2 MatchCollection m05 = Regex.Matches(expl, "\"价格\":(?<price>[^,]+)"); 3 Console.WriteLine("\n5.查询全部订单“价格”,输出价格信息"); 4 foreach (Match m005 in m05) 5 { 6 Console.WriteLine(m005.Groups["price"].Value); 7 }
心得:使用正则(?<price>xxxx)格式获取匹配组中的某一个项的值
6.查询全部订单信息,输出信息
1 //6.查询全部订单信息,输出信息 2 MatchCollection m06 = Regex.Matches(expl, "\"订单号\":(?<orderid>[^,]+),\"价格\":(?<price>[^,]+),\"下单时间\":\"(?<createtime>[^,]+)\",\"支付状态\":\"(?<paystatus>[^,]+)\""); 3 Console.WriteLine("\n6.查询全部订单信息,输出信息"); 4 foreach (Match m006 in m06) 5 { 6 7 8 Console.WriteLine(@"{0}:{1},{2}:{3},{4}:{5},{6}:{7}", 9 m006.Groups["orderid"], m006.Groups["orderid"].Value, 10 m006.Groups["price"], m006.Groups["price"].Value, 11 m006.Groups["createtime"], m006.Groups["createtime"].Value, 12 m006.Groups["paystatus"], m006.Groups["paystatus"].Value); 13 }
心得:获取匹配组中的多个项的值
7.查询“未支付”订单信息
1 //7.查询“未支付”订单信息 2 MatchCollection m07 = Regex.Matches(expl, "\"订单号\":(?<orderid>[^,]+),\"价格\":(?<price>[^,]+),\"下单时间\":\"(?<createtime>[^,]+)\",\"支付状态\":\"(?<paystatus>未支付)\""); 3 Console.WriteLine("\n7.查询“未支付”订单信息"); 4 foreach (Match m007 in m07) 5 { 6 7 8 Console.WriteLine(@"{0}:{1},{2}:{3},{4}:{5},{6}:{7}", 9 m007.Groups["orderid"], m007.Groups["orderid"].Value, 10 m007.Groups["price"], m007.Groups["price"].Value, 11 m007.Groups["createtime"], m007.Groups["createtime"].Value, 12 m007.Groups["paystatus"], m007.Groups["paystatus"].Value); 13 }
心得:匹配不同条件的集合组
8.大小写匹配结果
1 //8.大小写匹配结果 2 var m08 = Regex.IsMatch("I love ZuGuo", "ZUGUO"); 3 Console.WriteLine("\n8.大小写匹配结果"); 4 Console.WriteLine(m08);
心得:Regex默认匹配区分大小写
9.忽略大小写
1 //9.忽略大小写 2 var m09 = Regex.IsMatch("I love ZuGuo", "ZUGUO",RegexOptions.IgnoreCase); 3 Console.WriteLine("\n9.忽略大小写"); 4 Console.WriteLine(m09);
心得:使用RegexOptions项忽略大小写
10.匹配有空格的字符串信息
1 //10.匹配有空格的字符串信息 2 var m10 = Regex.Match("端 午 快 乐", "[^A]+"); 3 Console.WriteLine("\n10.匹配有空格的字符串信息"); 4 Console.WriteLine(m10.Value);
心得:正则的确很强大哈哈
代码:
1 //C#-正则,常用几种数据解析-端午快乐 2 3 //匹配对象 4 var expl = "[{\"订单号\":2006,\"价格\":888.90,\"下单时间\":\"2016-06-08 17:01\",\"支付状态\":\"已支付\",\"支付时间\":\"2016-06-08 17:10\"},{\"订单号\":2007,\"价格\":999.99,\"下单时间\":\"2016-06-08 17:01\",\"支付状态\":\"已支付\",\"支付时间\":\"2016-06-08 17:10\"},{\"订单号\":2008,\"价格\":999,\"下单时间\":\"2016-06-08 17:01\",\"支付状态\":\"未支付\",\"支付时间\":\"\"}]"; 5 6 //1.查询是否存在“订单号”数据的字符串 7 var isExists = Regex.IsMatch(expl, @"价格"); 8 Console.WriteLine("1.查询是否存在“订单号”数据的字符串"); 9 Console.WriteLine(isExists); 10 11 //2.查询一个“价格”(不包含小数部分) 12 var m02 = Regex.Match(expl, "\"价格\":\\d+"); 13 Console.WriteLine("\n2.查询一个“价格”(不包含小数部分)"); 14 Console.WriteLine(m02.Value); 15 16 //3.查询一个订单“价格”(包含价格的小数部分) 17 var m03 = Regex.Match(expl, "\"价格\":[^,]+"); 18 Console.WriteLine("\n3.查询一个订单“价格”(包含价格的小数部分)"); 19 Console.WriteLine(m03.Value); 20 21 //4.查询全部订单“价格” 22 MatchCollection m04 = Regex.Matches(expl, "\"价格\":[^,]+"); 23 Console.WriteLine("\n4.查询全部订单“价格”"); 24 foreach (Match m004 in m04) 25 { 26 Console.WriteLine(m004.Value); 27 } 28 29 //5.查询全部订单“价格”,输出价格信息 30 MatchCollection m05 = Regex.Matches(expl, "\"价格\":(?<price>[^,]+)"); 31 Console.WriteLine("\n5.查询全部订单“价格”,输出价格信息"); 32 foreach (Match m005 in m05) 33 { 34 Console.WriteLine(m005.Groups["price"].Value); 35 } 36 37 //6.查询全部订单信息,输出信息 38 MatchCollection m06 = Regex.Matches(expl, "\"订单号\":(?<orderid>[^,]+),\"价格\":(?<price>[^,]+),\"下单时间\":\"(?<createtime>[^,]+)\",\"支付状态\":\"(?<paystatus>[^,]+)\""); 39 Console.WriteLine("\n6.查询全部订单信息,输出信息"); 40 foreach (Match m006 in m06) 41 { 42 43 44 Console.WriteLine(@"{0}:{1},{2}:{3},{4}:{5},{6}:{7}", 45 m006.Groups["orderid"], m006.Groups["orderid"].Value, 46 m006.Groups["price"], m006.Groups["price"].Value, 47 m006.Groups["createtime"], m006.Groups["createtime"].Value, 48 m006.Groups["paystatus"], m006.Groups["paystatus"].Value); 49 } 50 51 //7.查询“未支付”订单信息 52 MatchCollection m07 = Regex.Matches(expl, "\"订单号\":(?<orderid>[^,]+),\"价格\":(?<price>[^,]+),\"下单时间\":\"(?<createtime>[^,]+)\",\"支付状态\":\"(?<paystatus>未支付)\""); 53 Console.WriteLine("\n7.查询“未支付”订单信息"); 54 foreach (Match m007 in m07) 55 { 56 57 58 Console.WriteLine(@"{0}:{1},{2}:{3},{4}:{5},{6}:{7}", 59 m007.Groups["orderid"], m007.Groups["orderid"].Value, 60 m007.Groups["price"], m007.Groups["price"].Value, 61 m007.Groups["createtime"], m007.Groups["createtime"].Value, 62 m007.Groups["paystatus"], m007.Groups["paystatus"].Value); 63 } 64 65 //8.大小写匹配结果 66 var m08 = Regex.IsMatch("I love ZuGuo", "ZUGUO"); 67 Console.WriteLine("\n8.大小写匹配结果"); 68 Console.WriteLine(m08); 69 70 //9.忽略大小写 71 var m09 = Regex.IsMatch("I love ZuGuo", "ZUGUO",RegexOptions.IgnoreCase); 72 Console.WriteLine("\n9.忽略大小写"); 73 Console.WriteLine(m09); 74 75 //10.匹配有空格的字符串信息 76 var m10 = Regex.Match("端 午 快 乐", "[^A]+"); 77 Console.WriteLine("\n10.匹配有空格的字符串信息"); 78 Console.WriteLine(m10.Value); 79 80 Console.ReadLine();
此时此刻想法:端午3天放假,一个人在北京雾霾城市,的确无聊,还好有dota1,有兴趣朋友一起来吧,11(神牛步行3)