文章出處

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

這里分享的是幾個在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)

 


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()