歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> C#正則表達式

C#正則表達式

日期:2017/3/1 10:10:55   编辑:Linux編程

剛接觸正則表達式時可能會覺得很暈乎.其實它的作用是很簡單的,只不過實現的細節方面有些復雜.正則表達式是用來解析字符串的.而解析字符串不外乎是達到下面幾種目的

1.驗證某一長串字符串中是否有符合某個條件的子字符串

2.從長字符串中提取符合某個條件的子字符串

3.把符合條件的子字符串替換成另外的字符串

4.把一個字符串分割成幾個小字符串

正則表達式的復雜主要是體現在怎麼指定那個"條件".其實實現上面說的4個目的大部分時候用string類的一些函數也照樣能實現.只不過有時太復雜了點

下面舉幾個簡單的例子說下怎麼實現上面的4個目的.使用正則表達式時要引用命名空間using System.Text.RegularExpressions;

1.驗證字符

假如有字符串string str = "I am arwen";我們想驗證下這個字符串裡是否包含字符"wen".

用正則表達式: bool exist = Regex.IsMatch(str, "wen");

用string類的函數:bool exist = str.Contains("wen");

2.提取字符

假如有字符串string str ="ahttpp://www.linuxidc.com/s?tn=sitehao12";我們想把字符www.linuxidc.com提取出來

用正則表達式:string subStr = Regex.Match(str, @"w{3}\..*\.com").Value;

用string類的函數:

int start = str.IndexOf("w");

int end = str.IndexOf("m");

string subStr = str.Substring(start, end - start + 1);

隨著問題的復雜我們發現string類的函數就有點力不 從心了.假如是隨便給一段未知的字符串,然後要求提取出一個網址來.用string類函數實現起來很復雜而且容易出錯

而用上面那句簡單的正則表達式就能正確的提取.

3.替換字符

還是和上面類似的例子,假如隨便給一段字符串,把裡面的網址替換成www.linuxidc.net

假設還是字符串string str ="ahttpp://www.linuxidc.com/s?tn=sitehao12";

用正則表達式.

string newStr = Regex.Replace(str, @"w{3}\..*\.com", "wwww.linuxidc.net");

這個用string的函數實現起來就更麻煩了啊.這裡就不用它來實現了.反正思路就是要先搜索出字符串裡的網址,再把它替換成www.linuxidc.net

4.分割字符

假如有字符string str = "http:ww/w.linuxidc.com";要以: / .這樣的符號為分割符,把字符分割成只包含字母的子字符串

用正則表達式:

string[] strs = Regex.Split(str, @"[:/\.]");

用string類的函數

string[] strs = str.Split(new char[] { ':', '/', '.' });

在上面的例子中我們會看到@"w{3}\..*\.com" 和@"[:/\.]這樣奇怪的字符串,我們一般把它們叫作模式(pattern),也就是說通過它來指明要符合某個條件.在正則表達式的應用中最難的地方就是怎麼通過它們來指定條件.其中的符號都有特殊的含義

Copyright © Linux教程網 All Rights Reserved