C#正規表示式之組與非捕獲組淺析 2009-08-20 13:44 chenglidexiaoxue CSDN部落格 字號:T | T 一鍵收藏,隨時檢視,分享好友! C#正規表示式之組與非捕獲組是什麼

kendyhj9999發表於2017-08-26

C#正規表示式之組與非捕獲組淺析

2009-08-20 13:44 chenglidexiaoxue CSDN部落格 字號:T | T
一鍵收藏,隨時檢視,分享好友!

C#正規表示式之組與非捕獲組是什麼呢?C#正規表示式之組與非捕獲組是如何使用的呢?C#正規表示式之組與非捕獲組代表什麼意思呢?那麼本文就向你介紹具體的內容。

AD:51CTO 網+ 第十二期沙龍:大話資料之美_如何用資料驅動使用者體驗

C#正規表示式之組與非捕獲組是什麼呢?具體的使用是如何的呢?讓我們來看看具體的例項操作:

以下提供一些簡單的C#正規表示式之組與非捕獲組示例:

  1. string x = "Live for nothing,die for something";  
  2.  
  3. string y = "Live for nothing,die for somebody";  
  4.  
  5. Regex r = new Regex(@"^Live ([a-z]{3}) no([a-z]{5}),die \1 some\2$");  
  6.  
  7. Console.WriteLine("x match count:" + r.Matches(x).Count);//1  
  8.  
  9. Console.WriteLine("y match count:" + r.Matches(y).Count);//0  
  10.  
  11. //正規表示式引擎會記憶“()”中匹配到的內容,作為一個“組”,  
  12. //並且可以通過索引的方式進行引用。表示式中的“\1”,  
  13. //用於反向引用表示式中出現的第一個組,即粗體標識的第一個括號內容,“\2”則依此類推。  
  14.  
  15. string x = "Live for nothing,die for something";  
  16. Regex r = new Regex(@"^Live for no([a-z]{5}),die for some\1$");  
  17. if (r.IsMatch(x))  
  18. {  
  19. Console.WriteLine("group1 value:" + r.Match(x).Groups[1].Value);//輸出:thing  
  20. }  
  21. //獲取組中的內容。注意,此處是Groups[1],  
  22. //因為Groups[0]是整個匹配的字串,即整個變數x的內容。  
  23.  
  24. string x = "Live for nothing,die for something";  
  25. Regex r = new Regex(@"^Live for no(?﹤g1﹥[a-z]{5}),die for some\1$");  
  26. if (r.IsMatch(x))  
  27. {  
  28. Console.WriteLine("group1 value:" + r.Match(x).Groups["g1"].Value);  
  29. //輸出:thing  
  30. }  
  31. //可根據組名進行索引。使用以下格式為標識一個組的名稱(?﹤groupname﹥…)。  
  32.  
  33. string x = "Live for nothing nothing";  
  34. Regex r = new Regex(@"([a-z]+) \1");  
  35. if (r.IsMatch(x))  
  36. {  
  37. x = r.Replace(x, "$1");  
  38. Console.WriteLine("var x:" + x);//輸出:Live for nothing  
  39. }  
  40. //刪除原字串中重複出現的“nothing”。在表示式之外,  
  41. //使用“$1”來引用第一個組,下面則是通過組名來引用:  
  42. string x = "Live for nothing nothing";  
  43. Regex r = new Regex(@"(?﹤g1﹥[a-z]+) \1");  
  44. if (r.IsMatch(x))  
  45. {  
  46. x = r.Replace(x, "${g1}");  
  47. Console.WriteLine("var x:" + x);//輸出:Live for nothing  
  48. }  
  49.  
  50. string x = "Live for nothing";  
  51. Regex r = new Regex(@"^Live for no(?:[a-z]{5})$");  
  52. if (r.IsMatch(x))  
  53. {  
  54. Console.WriteLine("group1 value:" + r.Match(x).Groups[1].Value);//輸出:(空)  
  55. }  
  56. //在組前加上“?:”表示這是個“非捕獲組”,即引擎將不儲存該組的內容。  

C#正規表示式之組與非捕獲組使用的基本內容就向你介紹到這裡,希望對你瞭解和學習C#正規表示式有所幫助。

相關文章