欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
.NET正則表達式使用高級技巧之替換類(lèi)
因為.net的基本正則語(yǔ)法和Perl5基本相同,所以基本語(yǔ)法你可以去下載一下M$的JS幫助文檔,上面有詳細的說(shuō)明\d表示什么,{,5}表示什么,\[表示什么……,這里我只想提醒大家一點(diǎn),為了避免和反向引用相沖突,在你用\nn表示八進(jìn)制的ASCII碼時(shí),請在\后加0,就是說(shuō),\40在表示ASCII碼時(shí),請這樣寫(xiě)\040。
  替換
  Regex類(lèi)有一個(gè)靜態(tài)的Replace方法,其實(shí)例也有一個(gè)Replace方法,這個(gè)方法很強大,因為它可以傳入一個(gè)delegate,這樣,你可以自定義每次捕獲匹配時(shí),如何處理捕獲的內容。
  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;
  }
  
  以上這段代碼說(shuō)明了如果使用delegate MatchEvaluator 來(lái)處理正則的Match結果,該代碼返回"01 12 03 05"。Replace方法除了使用delegate來(lái)處理捕獲的Match,還可以用字符串來(lái)替換Match的結果,而用字符串來(lái)替換Match結果除了把Match結果靜態(tài)的替換成一個(gè)固定的文本外,還可以使用以下語(yǔ)法來(lái)更方便的實(shí)現你需要的功能:
  
  
  $number
  
  把匹配的第number組替換成替換表達式,還有這句話(huà)怎么寫(xiě)也表達不清楚意思,還是來(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ō),對組一的每個(gè)匹配結果都用"0$1"這個(gè)表達式來(lái)替換,"0$1"中"$1"由組1匹配的結果代入
  
  ${name}
  把匹配的組名為"name"的組替換成表達式,
  上例的Regex expression改成@"(?<name>\d+)(?#這個(gè)是注釋)"后面的替換式改為"0${name}"結果是一樣的
  
  $$
  做$的轉義符,如上例表達式改成@"(?<name>\d+)(?#這個(gè)是注釋)"和"$$${name}",則結果為"$1 $12 $3 $5"
  
  $&
  替換整個(gè)匹配
  
  $`
  替換匹配前的字符
  
  $'
  替換匹配后的字符
  
  $+
  替換最后匹配的組
  
  $_
  替換整個(gè)字符串
  后面的選項,大家自己寫(xiě)個(gè)例子體味一下。
  *注,上例中的(?#這個(gè)是注釋)說(shuō)明了正則的內聯(lián)注釋語(yǔ)法為(?#)
  表達項選項
  正則表達式選項RegexOptions有如下一下選項,詳細說(shuō)明請參考聯(lián)機幫助
  
  
  RegexOptions枚舉值
  內聯(lián)標志
  簡(jiǎn)單說(shuō)明
  
  ExplicitCapture
  n
  只有定義了命名或編號的組才捕獲
  
  IgnoreCase
  i
  不區分大小寫(xiě)
  
  IgnorePatternWhitespace
  x
  消除模式中的非轉義空白并啟用由 # 標記的注釋。
  
  MultiLine
  m
  多行模式,其原理是修改了^和$的含義
  
  SingleLine
  s
  單行模式,和MultiLine相對應
  這里我提到內聯(lián)標志,是因為相對于用RegexOptions在new Regex時(shí)定義Regex表達式的全局選項來(lái)說(shuō),內聯(lián)標志可以更小粒度(以組為單位)的定義匹配選項,從而更方便表達我們的思想
  語(yǔ)法是這樣的:(?i:expression)為定義一個(gè)選項,(?-i:expression)為刪除一個(gè)選項,(?i-s:expression)則定義i,刪除s,是的,我們可以一次定義很多個(gè)選項。這樣,通過(guò)內聯(lián)選項,你就可以在一個(gè)Regex中定義一個(gè)組為匹分大小寫(xiě)的,一個(gè)組不匹分大小寫(xiě)的,是不是很方便呢?
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
NET 正則表達式使用高級技巧之替換類(lèi)介紹
C#利用正則表達式實(shí)現字符串搜索
C#正則表達式整理
【C#】正則進(jìn)階
C#中正則表達式的使用
正則表達式總結
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久