亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時(shí)間:2012年04月27日 16:08:04   作者:  
因?yàn)?net的基本正則語(yǔ)法和Perl5基本相同,所以基本語(yǔ)法你可以去下載一下M$的JS幫助文檔,上面有詳細(xì)的說(shuō)明
\d表示什么,{,5}表示什么,\[表示什么……,這里我只想提醒大家一點(diǎn),為了避免和反向引用相沖突,在你用\nn表示八進(jìn)制的ASCII碼時(shí),請(qǐng)?jiān)赲后加0,就是說(shuō),\40在表示ASCII碼時(shí),請(qǐng)這樣寫(xiě)\040。 

  替換 

  Regex類有一個(gè)靜態(tài)的Replace方法,其實(shí)例也有一個(gè)Replace方法,這個(gè)方法很強(qiáng)大,因?yàn)樗梢詡魅胍粋€(gè)delegate,這樣,你可以自定義每次捕獲匹配時(shí),如何處理捕獲的內(nèi)容。
 
  以上這段代碼說(shuō)明了如果使用delegate MatchEvaluator 來(lái)處理正則的Match結(jié)果,該代碼返回"01 12 03 05"。Replace方法除了使用delegate來(lái)處理捕獲的Match,還可以用字符串來(lái)替換Match的結(jié)果,而用字符串來(lái)替換Match結(jié)果除了把Match結(jié)果靜態(tài)的替換成一個(gè)固定的文本外,還可以使用以下語(yǔ)法來(lái)更方便的實(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á)式,還有這句話怎么寫(xiě)也表達(dá)不清楚意思,還是來(lái)個(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” 

  就是說(shuō),對(duì)組一的每個(gè)匹配結(jié)果都用"0$1"這個(gè)表達(dá)式來(lái)替換,"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),大家自己寫(xiě)個(gè)例子體味一下。 

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

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

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

RegexOptions枚舉值 內(nèi)聯(lián)標(biāo)志 簡(jiǎn)單說(shuō)明
ExplicitCapture n 只有定義了命名或編號(hào)的組才捕獲
IgnoreCase i 不區(qū)分大小寫(xiě)
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)來(lái)說(shuō),內(nèi)聯(lián)標(biāo)志可以更小粒度(以組為單位)的定義匹配選項(xiàng),從而更方便表達(dá)我們的思想 

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

相關(guān)文章

  • 如何使用正則表達(dá)式對(duì)輸入數(shù)字進(jìn)行匹配詳解

    如何使用正則表達(dá)式對(duì)輸入數(shù)字進(jìn)行匹配詳解

    正則表達(dá)式用于字符串處理、表單驗(yàn)證等場(chǎng)合,實(shí)用高效,下面這篇文章主要給大家介紹了關(guān)于如何使用正則表達(dá)式對(duì)輸入數(shù)字進(jìn)行匹配的相關(guān)資料,文中介紹的非常詳細(xì),需要的朋友可以參考下
    2022-10-10
  • 手機(jī)號(hào)碼驗(yàn)證方法(正則驗(yàn)證)

    手機(jī)號(hào)碼驗(yàn)證方法(正則驗(yàn)證)

    這篇文章主要介紹了手機(jī)號(hào)碼驗(yàn)證方法(正則驗(yàn)證),在文章中還給大家補(bǔ)充了最新手機(jī)號(hào)的驗(yàn)證正則表達(dá)式,需要的朋友可以參考下
    2017-02-02
  • 正則表達(dá)式教程之子表達(dá)式用法分析

    正則表達(dá)式教程之子表達(dá)式用法分析

    這篇文章主要介紹了正則表達(dá)式教程之子表達(dá)式用法,分析了正則表達(dá)式中子表達(dá)式的概念、功能與使用方法,需要的朋友可以參考下
    2017-01-01
  • ES2015 正則表達(dá)式新增特性

    ES2015 正則表達(dá)式新增特性

    ES2015 正則表達(dá)式新增特性,在原來(lái)正則表達(dá)式基礎(chǔ)上,ES2015增強(qiáng)了對(duì)四字節(jié)unicode字符的支持等功能
    2016-12-12
  • 基于xpath選擇器、PyQuery、正則表達(dá)式的格式清理工具詳解

    基于xpath選擇器、PyQuery、正則表達(dá)式的格式清理工具詳解

    這篇文章主要介紹了基于xpath選擇器、PyQuery、正則表達(dá)式的格式清理工具,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • 正則表達(dá)式口訣 正則表達(dá)式學(xué)習(xí)工具

    正則表達(dá)式口訣 正則表達(dá)式學(xué)習(xí)工具

    正則表達(dá)式口訣 + 常用的正則表達(dá)式 + 正則表達(dá)式學(xué)習(xí)工具+正則處理工具 正則是每個(gè)程序員繞不開(kāi)的堡壘,只有把它攻下來(lái)。我覺(jué)得正則之所以難,第一難是需要記憶,第二難是要求具備抽象邏輯思維。
    2008-08-08
  • 正則表達(dá)式regular expression詳述(二)

    正則表達(dá)式regular expression詳述(二)

    正則表達(dá)式regular expression詳述(二)...
    2006-06-06
  • 正則表達(dá)式的優(yōu)化全面詳解( 三江小渡)

    正則表達(dá)式的優(yōu)化全面詳解( 三江小渡)

    最近經(jīng)常接觸的數(shù)據(jù)動(dòng)不動(dòng)都是幾G的量,所以滿腦子都是考慮的優(yōu)化兩個(gè)字,不過(guò)還好之前是搞算法競(jìng)賽的,效率這個(gè)問(wèn)題也一直是做斗爭(zhēng)的對(duì)象,還算習(xí)慣吧,最近寫(xiě)正則也比較多,所以參考參考書(shū)、博文、自己的經(jīng)驗(yàn)寫(xiě)點(diǎn)總結(jié)性的優(yōu)化策略
    2012-09-09
  • 正則表達(dá)式小結(jié)篇

    正則表達(dá)式小結(jié)篇

    本文是小編給大家收集整理的關(guān)于正則表達(dá)式小結(jié),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友一起看看吧
    2016-12-12
  • 正則表達(dá)式教程之操作符及說(shuō)明詳解

    正則表達(dá)式教程之操作符及說(shuō)明詳解

    這篇文章主要介紹了正則表達(dá)式教程之操作符及說(shuō)明,詳細(xì)分析了正則表達(dá)式中常見(jiàn)操作符及相應(yīng)的功能,需要的朋友可以參考下
    2017-01-01

最新評(píng)論