C#正則表達式
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