国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

[正則表達式]基礎知識總結

2019-11-17 02:41:41
字體:
來源:轉載
供稿:網友

[正則表達式]基礎知識總結

Posted on 2014-12-22 22:27 lsr_flying 閱讀(...) 評論(...) 編輯 收藏

  一直只是知道正則表達式的用途,但具體沒使用過,今天稍微了解了下它的基礎用法。這里總結一下。

  

  命令空間:System.Text.RegularExPRessions

  用途:

    1.   對字符串進行查找和替換;
    2.   識別重復的單詞;
    3.   轉換格式;
    4.   區分一個字符串的各個子元素,并進行提取。

  RegEx類:

   是對正則表達式引擎的類抽象,通過調用該抽象類的不同方法,實現對正則表達式的處理。

   該類的主要方法如下所示,具體用途相信通過方法名即可知道:

  

  了解完Regex類的主要方法后,還需要關注三個比較重要的類和它們的層次,分別是:Match類、Group類和Capture類。

  假設有如下字符串,input(原始字符串),pattern(正則表達式).

  Match類:模式匹配返回的一個結果,比如調用Regex.Match()方法,會根據輸入的正則表達式(pattern),在字符串(input)中進行匹配,每個匹配的結果返回一個Match類實例。

  Group類:表示正則表達式(pattern)中的子表達式的匹配結果,用括號括起來,如patter=@"(/d{1,2})[.,]?(/d{1,3})"。就有兩個組:(/d{1,2})和(/d{1,3})。

  Capture類:返回匹配子表達式的結果。CaptureCollections返回所有符合子表達式的結果。

  Group類與Capture類的區別

  參考MSDN上的幫助文檔(http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.group(v=vs.110).aspx),通過以下代碼來說明它們的區別:

 1 using System; 2 using System.Text.RegularExpressions; 3  4 public class Example 5 { 6    public static void Main() 7    { 8       string pattern = @"(/b(/w+?)[,:;]?/s?)+[?.!]"; 9       string input = "This is one sentence. This is a second sentence.";10 11       Match match = Regex.Match(input, pattern);12       Console.WriteLine("Match: " + match.Value);13       int groupCtr = 0;14       foreach (Group group in match.Groups)15       {16          groupCtr++;17          Console.WriteLine("   Group {0}: '{1}'", groupCtr, group.Value);18          int captureCtr = 0;19          foreach (Capture capture in group.Captures)20          {21             captureCtr++;22             Console.WriteLine("      Capture {0}: '{1}'", captureCtr, capture.Value);23          }24       }   25    }26 }27 // The example displays the following output: 28 //       Match: This is one sentence. 29 //          Group 1: 'This is one sentence.' 30 //             Capture 1: 'This is one sentence.' 31 //          Group 2: 'sentence' 32 //             Capture 1: 'This ' 33 //             Capture 2: 'is ' 34 //             Capture 3: 'one ' 35 //             Capture 4: 'sentence' 36 //          Group 3: 'sentence' 37 //             Capture 1: 'This' 38 //             Capture 2: 'is' 39 //             Capture 3: 'one' 40 //             Capture 4: 'sentence'

  

  如果在字符后添加了quantifiers(數量詞),如在pattern表達式中,(/w+?)用來匹配出現在一個句子當中的多個單詞。但是Group對象只返回最后一個匹配(/w+?)的對象。而Capture記錄的是每一次匹配(/w+?)的對象。如果沒有添加數量詞,Capture和Group可用來表示同一個對象。

  下圖表示了三者的繼承關系(左圖),在使用時的層次關系(右圖):

  接下來,就是介紹如何寫正則表達式。這就是對不同字符串的分類和抽象表示的過程。主要包括以下9種類型:

  1. Character Escapes,轉義字符;
  2. Character Classes:表示對字符的抽象分類;
  3. Anchors:錨點,界定字符位置;
  4. Group Construcs:對字符進行組合,使正則引擎想對待一個字符一樣處理這個序列,用括號括起一個組;
  5. Quantifiers:數量詞,定義字符出現的次數;
  6. Backreference Constructs:使用之前匹配的子表達式再次進行匹配;
  7. Alternation Constructs:選擇匹配語句;
  8. Substitutions:字符替換;
  9. Regular Expression Options:正則表達式具體操作選項。

  

  理清楚這些類型之間的關系后,使用正則表達式就會有一個比較清晰的思路和概念。正則表達式的關鍵就是在于如何寫正確的匹配語句,它是后續其它操作的基礎。具體的類型格式可參考MSDN的:Quick Reference in PDF (.pdf) format。(具體下載鏈接:http://msdn.microsoft.com/en-us/library/hs600312.aspx)。

  下面附上一些自己練習的簡單正則表達式,以方便有一個直觀理解:

1.將首字母替換成大寫:

1 string input = "this is a Good mornIng.";2 string pattern = @"/b([a-z])([a-zA-Z]{2,})/b";3 string result = Regex.Replace(input, pattern,              match=>match.Groups[1].Value.ToUpper()+match.Groups[2].Value);4  Console.WriteLine(result);5 6 //結果:This is a Good MornIng.

  2.替換貨幣符號:

1 string Word = "$12.4 $0.2 $2 3.5";2 string sub = "$1";3 string pattern = @"/p{Sc}*(/d+[,.]?/d*)";4 string result = Regex.Replace(word, pattern, "($1)");5 Console.WriteLine(result);6 7 //Result:8 //(12.4) (0.2) (2) (3.5)

  


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 清河县| 泾川县| 始兴县| 双牌县| 朝阳县| 册亨县| 封丘县| 泊头市| 乳山市| 正镶白旗| 邢台县| 阿勒泰市| 红桥区| 宽城| 深泽县| 辉南县| 双牌县| 红桥区| 东方市| 屯昌县| 镇巴县| 青岛市| 南投县| 奉节县| 临朐县| 西藏| 贺州市| 呼玛县| 长岭县| 五大连池市| 郴州市| 宾阳县| 石景山区| 林甸县| 庆元县| 江安县| 新民市| 镇原县| 香河县| 视频| 肃南|