濮阳杆衣贸易有限公司

主頁 > 知識(shí)庫(kù) > .NET 正則表達(dá)式使用高級(jí)技巧之替換類介紹

.NET 正則表達(dá)式使用高級(jí)技巧之替換類介紹

熱門標(biāo)簽:地圖標(biāo)注店鋪地圖標(biāo)注酒店 自己做的電銷機(jī)器人 哈爾濱公司外呼系統(tǒng)代理 遼寧秒客來電話機(jī)器人 山東外呼系統(tǒng)聯(lián)系方式 浙江營(yíng)銷外呼系統(tǒng)有哪些 惠安地圖標(biāo)注 上海銷售電銷機(jī)器人軟件 淄博市張店區(qū)地圖標(biāo)注
\d表示什么,{,5}表示什么,\[表示什么……,這里我只想提醒大家一點(diǎn),為了避免和反向引用相沖突,在你用\nn表示八進(jìn)制的ASCII碼時(shí),請(qǐng)?jiān)赲后加0,就是說,\40在表示ASCII碼時(shí),請(qǐng)這樣寫\040。 

  替換 

  Regex類有一個(gè)靜態(tài)的Replace方法,其實(shí)例也有一個(gè)Replace方法,這個(gè)方法很強(qiáng)大,因?yàn)樗梢詡魅胍粋€(gè)delegate,這樣,你可以自定義每次捕獲匹配時(shí),如何處理捕獲的內(nèi)容。
 
  以上這段代碼說明了如果使用delegate MatchEvaluator 來處理正則的Match結(jié)果,該代碼返回"01 12 03 05"。Replace方法除了使用delegate來處理捕獲的Match,還可以用字符串來替換Match的結(jié)果,而用字符串來替換Match結(jié)果除了把Match結(jié)果靜態(tài)的替換成一個(gè)固定的文本外,還可以使用以下語法來更方便的實(shí)現(xiàn)你需要的功能: 
復(fù)制代碼 代碼如下:

public static void Main()
{
string s = "1 12 3 5";
s = Regex.Replace(s,@"\d+",new MatchEvaluator(CorrectString),RegexOptions.Compiled|RegexOptions.IgnoreCase);
Console.WriteLine(s);
Console.ReadLine();
}
private static string CorrectString(Match match)
{
string matchValue = match.Value;
if(matchValue.Length == 1)
matchValue = "0" + matchValue;
return matchValue;
}


$number

  把匹配的第number組替換成替換表達(dá)式,還有這句話怎么寫也表達(dá)不清楚意思,還是來個(gè)例子吧:

 public static void Main() 
 { 
 string s = "1 12 3 5"; 
 s = Regex.Replace(s,@"(\d+)(?#這個(gè)是注釋)","0$1",RegexOptions.Compiled|RegexOptions.IgnoreCase); 
 Console.WriteLine(s); 
 Console.ReadLine(); 
 }

  這段代碼返回的是 “01 012 03 05” 

  就是說,對(duì)組一的每個(gè)匹配結(jié)果都用"0$1"這個(gè)表達(dá)式來替換,"0$1"中"$1"由組1匹配的結(jié)果代入

${name}   把匹配的組名為"name"的組替換成表達(dá)式, 

  上例的Regex expression改成@"(?name>\d+)(?#這個(gè)是注釋)"后面的替換式改為"0${name}"結(jié)果是一樣的
$$   做$的轉(zhuǎn)義符,如上例表達(dá)式改成@"(?name>\d+)(?#這個(gè)是注釋)"和"$$${name}",則結(jié)果為"$1 $12 $3 $5"
$   替換整個(gè)匹配
$`   替換匹配前的字符
$'   替換匹配后的字符
$+   替換最后匹配的組
$_   替換整個(gè)字符串
  
  后面的選項(xiàng),大家自己寫個(gè)例子體味一下。 

  *注,上例中的(?#這個(gè)是注釋)說明了正則的內(nèi)聯(lián)注釋語法為(?#) 

  表達(dá)項(xiàng)選項(xiàng) 

  正則表達(dá)式選項(xiàng)RegexOptions有如下一下選項(xiàng),詳細(xì)說明請(qǐng)參考聯(lián)機(jī)幫助 

RegexOptions枚舉值 內(nèi)聯(lián)標(biāo)志 簡(jiǎn)單說明
ExplicitCapture n 只有定義了命名或編號(hào)的組才捕獲
IgnoreCase i 不區(qū)分大小寫
IgnorePatternWhitespace x 消除模式中的非轉(zhuǎn)義空白并啟用由 # 標(biāo)記的注釋。
MultiLine m 多行模式,其原理是修改了^和$的含義
SingleLine s 單行模式,和MultiLine相對(duì)應(yīng)
  
  這里我提到內(nèi)聯(lián)標(biāo)志,是因?yàn)橄鄬?duì)于用RegexOptions在new Regex時(shí)定義Regex表達(dá)式的全局選項(xiàng)來說,內(nèi)聯(lián)標(biāo)志可以更小粒度(以組為單位)的定義匹配選項(xiàng),從而更方便表達(dá)我們的思想 

  語法是這樣的:(?i:expression)為定義一個(gè)選項(xiàng),(?-i:expression)為刪除一個(gè)選項(xiàng),(?i-s:expression)則定義i,刪除s,是的,我們可以一次定義很多個(gè)選項(xiàng)。這樣,通過內(nèi)聯(lián)選項(xiàng),你就可以在一個(gè)Regex中定義一個(gè)組為匹分大小寫的,一個(gè)組不匹分大小寫的,是不是很方便呢?

您可能感興趣的文章:
  • php preg_filter執(zhí)行一個(gè)正則表達(dá)式搜索和替換
  • 一串字字符中多個(gè)逗號(hào)替換為一個(gè) 既標(biāo)準(zhǔn)分隔符(正則表達(dá)式)
  • SQL Server正則表達(dá)式 替換函數(shù)應(yīng)用詳解
  • RegexOptions.IgnoreCase正則表達(dá)式替換,忽略大小寫
  • JS、replace利用正則表達(dá)式替換SQL所有參數(shù)為指定格式的數(shù)據(jù)
  • 如何在PHP中使用正則表達(dá)式進(jìn)行查找替換
  • 用正則表達(dá)式替換圖片地址img標(biāo)簽
  • JS使用replace()方法和正則表達(dá)式進(jìn)行字符串的搜索與替換實(shí)例
  • PHP把空格、換行符、中文逗號(hào)等替換成英文逗號(hào)的正則表達(dá)式
  • 最新版網(wǎng)址替換正則表達(dá)式
  • 深入淺出解析正則表達(dá)式-替換原則

標(biāo)簽:泰州 長(zhǎng)沙 無錫 重慶 銅川 西安 綿陽 宣城

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《.NET 正則表達(dá)式使用高級(jí)技巧之替換類介紹》,本文關(guān)鍵詞  .NET,正則,表達(dá)式,使用,高級(jí),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《.NET 正則表達(dá)式使用高級(jí)技巧之替換類介紹》相關(guān)的同類信息!
  • 本頁收集關(guān)于.NET 正則表達(dá)式使用高級(jí)技巧之替換類介紹的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章

    上一篇:正則表達(dá)式字面量在ECMAScript5中的變化

    下一篇:正則表達(dá)式常用元字符整理小結(jié)

    灵丘县| 开封市| 抚顺市| 团风县| 宁远县| 易门县| 蓬溪县| 华池县| 嘉禾县| 建阳市| 甘肃省| 珠海市| 湘潭县| 晋州市| 吴堡县| 莱阳市| 平利县| 如东县| 湘潭县| 扶绥县| 镇原县| 屯留县| 灌云县| 上高县| 乃东县| 元阳县| 临城县| 衢州市| 郑州市| 周口市| 孟州市| 湄潭县| 新野县| 南乐县| 凌海市| 景东| 德令哈市| 洪江市| 克山县| 临沭县| 册亨县|