C#正則表達式

jopen 10年前發布 | 14K 次閱讀 正則表達式 .NET開發

1. 使用到的類

    C#中使用正則表達式需要如下幾個類(類所在的命名空間為:System.Text.RegularExpressions):
        * Regex 編譯后的表達式的實例
        * RegexOptions 提供用于設置正則表達式的枚舉值
        * RegexCompilationInfo:提供編譯器用于將正則表達式編譯為獨立程序集的信息
        * Capture: 包含一次匹配的結果; 
        * CaptureCollection: Capture的序列; 
        * Group: 一次組記錄的結果,由Capture繼承而來; 
        * GroupCollection:表示捕獲組的集合
        * Match: 一次表達式的匹配結果,由Group繼承而來; 
        * MatchCollection: Match的一個序列; 
        * MatchEvaluator: 執行替換操作時使用的委托;

2. 類方法介紹

    Regex類中還包含一些靜態的方法: 
        Escape:       對字符串中的regex中的轉義符進行轉義; 
        IsMatch:     如果表達式在字符串中匹配,該方法返回一個布爾值; 
        Match:       返回Match的實例; 
        Matches:    返回一系列的Match的方法; 
        Replace:      用替換字符串替換匹配的表達式; 
        Split:          返回一系列由表達式決定的字符串; 
        Unescape:   不對字符串中的轉義字符轉義。

3. 如何用?

    3.1 新建一個Regex實例對象

/**

  • 使用兩個參數的構造
  • RegexOptions屬于枚舉類型,包括IgnoreCase(忽略大小寫)、ReghtToLeft(從右向左)、None(默認)、CultureInvariant(忽略區域)、Multline(多行模式)和SingleLine(單行模式)) / Regex regex = new Regex(@"[+-]{1}\d{1,}[.][0-9]", RegexOptions.None);

// 或者 Regex regex = new Regex(@"[+-]{1}\d{1,}[.][0-9]");</pre>



    3.2 獲取匹配結果,調用Regex對象的match方法

    

/**

  • 獲取匹配結果對象
  • 匹配結果Match類對象的屬性:
  • Success:匹配是否成功
  • Value: 如果匹配成功,那么可以取得匹配的子字符串
  • 方法:
  • NextMatch: 從上一個匹配結果的位置開始,返回包含下一匹配結果的新Match對象 / Match match = regex.Match(text);</pre>


        3.3 獲取匹配結果子字符串

    while(match.Success)
    {
    Console.WriteLine(match.Value);
    match = match.NextMatch();
    }



    完整例子代碼:
    string text = @"Flow -0880.809 m3/h";
    Regex regex = new Regex(@"[+-]{1}\d{1,}[.][0-9]*", RegexOptions.None);
    Console.WriteLine("regex match count:" + regex.Matches(text).Count);
    Match match = regex.Match(text);
    if (match.Success)
    {
       Console.WriteLine(match.Value);
       match = match.NextMatch();
    }</pre> 


        3.4 常用的正則表達式

        IP地址匹配:
            簡單的匹配: (\d{1,3}\.){3}\d{1,3}
            正確的匹配: ((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)

    4. 參考博客 

         http://blog.csdn.net/begtostudy/article/details/3081083
         http://www.cnblogs.com/Fskjb/archive/2010/01/22/1654439.html
         http://www.cnblogs.com/deerchao/archive/2006/08/24/zhengzhe30fengzhongjiaocheng.html
         http://zhoufoxcn.blog.51cto.com/792419/283021

                
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!