在等待幾個小時就是端午節了,這裡預祝各位節日快樂。
這裡分享的是幾個在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)