C#-正則,常用幾種資料解析-端午快樂

神牛003發表於2016-06-08

在等待幾個小時就是端午節了,這裡預祝各位節日快樂。

這裡分享的是幾個在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);
View Code

心得:IsMatch方法判斷是否存在匹配的項,直接往方法裡面填寫需要搜尋的資訊就行。

2.查詢一個“價格”(不包含小數部分)

1 //2.查詢一個“價格”(不包含小數部分)
2             var m02 = Regex.Match(expl, "\"價格\":\\d+");
3             Console.WriteLine("\n2.查詢一個“價格”(不包含小數部分)");
4             Console.WriteLine(m02.Value);
View Code

  心得:Match直接獲取匹配項的值

  3.查詢一個訂單“價格”(包含價格的小數部分)

1 //3.查詢一個訂單“價格”(包含價格的小數部分)
2             var m03 = Regex.Match(expl, "\"價格\":[^,]+");
3             Console.WriteLine("\n3.查詢一個訂單“價格”(包含價格的小數部分)");
4             Console.WriteLine(m03.Value);
View Code

  心得:使用正則的^匹配資料

  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             }
View Code

  心得: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             }
View Code

  心得:使用正則(?<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             }
View Code

  心得:獲取匹配組中的多個項的值

  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             }
View Code

  心得:匹配不同條件的集合組

  8.大小寫匹配結果

1 //8.大小寫匹配結果
2             var m08 = Regex.IsMatch("I love ZuGuo", "ZUGUO");
3             Console.WriteLine("\n8.大小寫匹配結果");
4             Console.WriteLine(m08);
View Code

  心得:Regex預設匹配區分大小寫

  9.忽略大小寫

1 //9.忽略大小寫
2             var m09 = Regex.IsMatch("I love ZuGuo", "ZUGUO",RegexOptions.IgnoreCase);
3             Console.WriteLine("\n9.忽略大小寫");
4             Console.WriteLine(m09);
View Code

  心得:使用RegexOptions項忽略大小寫

  10.匹配有空格的字串資訊

1  //10.匹配有空格的字串資訊
2             var m10 = Regex.Match("端 午 快 樂", "[^A]+");
3             Console.WriteLine("\n10.匹配有空格的字串資訊");
4             Console.WriteLine(m10.Value);
View Code

  心得:正則的確很強大哈哈

  程式碼:

 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();
View Code

  此時此刻想法:端午3天放假,一個人在北京霧霾城市,的確無聊,還好有dota1,有興趣朋友一起來吧,11(神牛步行3)

 

相關文章