婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > .NET 正則表達式使用高級技巧之替換類介紹

.NET 正則表達式使用高級技巧之替換類介紹

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

  替換 

  Regex類有一個靜態的Replace方法,其實例也有一個Replace方法,這個方法很強大,因為它可以傳入一個delegate,這樣,你可以自定義每次捕獲匹配時,如何處理捕獲的內容。
 
  以上這段代碼說明了如果使用delegate MatchEvaluator 來處理正則的Match結果,該代碼返回"01 12 03 05"。Replace方法除了使用delegate來處理捕獲的Match,還可以用字符串來替換Match的結果,而用字符串來替換Match結果除了把Match結果靜態的替換成一個固定的文本外,還可以使用以下語法來更方便的實現你需要的功能: 
復制代碼 代碼如下:

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組替換成替換表達式,還有這句話怎么寫也表達不清楚意思,還是來個例子吧:

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

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

  就是說,對組一的每個匹配結果都用"0$1"這個表達式來替換,"0$1"中"$1"由組1匹配的結果代入

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

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

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

  表達項選項 

  正則表達式選項RegexOptions有如下一下選項,詳細說明請參考聯機幫助 

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

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

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

標簽:泰州 長沙 無錫 重慶 銅川 西安 綿陽 宣城

巨人網絡通訊聲明:本文標題《.NET 正則表達式使用高級技巧之替換類介紹》,本文關鍵詞  .NET,正則,表達式,使用,高級,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《.NET 正則表達式使用高級技巧之替換類介紹》相關的同類信息!
  • 本頁收集關于.NET 正則表達式使用高級技巧之替換類介紹的相關信息資訊供網民參考!
  • 推薦文章

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

    下一篇:正則表達式常用元字符整理小結

    主站蜘蛛池模板: 兴城市| 通州市| 玉田县| 伊通| 兴安县| 红安县| 玉树县| 平远县| 余姚市| 会理县| 广饶县| 乌海市| 托里县| 玉树县| 通州区| 融水| 浙江省| 泗洪县| 炉霍县| 惠东县| 沾益县| 大姚县| 仪陇县| 无棣县| 乡城县| 佳木斯市| 雅江县| 望奎县| 荔波县| 武穴市| 喜德县| 九龙城区| 镇江市| 永清县| 宁波市| 利辛县| 嵊泗县| 九台市| 洛隆县| 黑龙江省| 高淳县|