程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 正則表達式應用:分析查詢字符串

正則表達式應用:分析查詢字符串

編輯:C#入門知識

 正則表達式作為一種分析技術,在很多地方都可以使用,最基礎的可能人人都會。再此通過一系列簡單的例子講解正則表達式。     給定一個地址如何分析需要的數據,例如如下的網址,分析各個查詢字符串          基本思路是, 1先得到?後邊的部分, 2再根據&和=分割     1先得到?後邊的部分,     匹配查詢字符串的正則表達式:\?(?<querystring>([^&]+&?)+),去掉命名部分的正則表達式為:\?([^&]+&?)+ 匹配到'?word=test&tn=sitehao123&ie=utf-8     \?([^&]+&?)+具體含義 :           \?表示已 ?開頭,由於?在正則表達式的中有特殊含義,所以需要一個斜槓 \轉義。           [^&]+表示匹配不是&的任意一個或者多個字符          &? 表示&出現一次或者不出現       \?([^&]+&?)+的整體含義就是          1匹配以?開頭           2              2.1匹配不是&的多個字符             2.2匹配&一個或者沒有             2.3 重復2.1,2.2一次或者多次         3 把(([^&]+&?)+)部分匹配到的字符命名為querystring則正則表達式變為:\?(?<querystring>([^&]+&?)+)   2再根據&和=分割 分析查詢字符串的正則表達式為:((?<key>[^&=]+)=(?<value>[^&=]+))+,去掉命名部分的正則表達式為:(([^&=]+)=([^&=]+))+              [^&=]+表示匹配不是&=的任意一個或者多個字符        (([^&=]+)=([^&=]+))+的整體含義就是       1匹配不是&=的任意一個或者多個字符        2匹配等號=        3匹配不是&=的任意一個或者多個字符       4重復以上1,2,3     把1匹配到的字符命名為key,把3匹配到的字符命名為value,則正則表達式變為((?<key>[^&=]+)=(?<value>[^&=]+))+   測試的代碼如下:  

private static void Test()   
      {  
          string url = "http://www.baidu.com/s?word=test&tn=sitehao123&ie=utf-8";  
            Regex reg = new Regex(@"\?(?<querystring>([^&]+&?)+)");            
            Match m =  reg.Match(url);  
            string querystring = m.Groups["querystring"].Value;  
            Regex reg2 = new Regex(@"((?<key>[^&=]+)=(?<value>[^&=]+))+");  
            Dictionary<string, string> querystringKeyValue = new Dictionary<string, string>();  
            foreach (Match item in reg2.Matches(querystring))  
          {               
            querystringKeyValue.Add(item.Groups["key"].Value, item.Groups["value"].Value);               
          }  
        
      }  

 

         

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved