成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

.NET正則表達(dá)式的替換類

開發(fā) 后端
.NET的基本正則語法和Perl5基本相同,我們今天要講述的是.NET正則表達(dá)式之替換類高級技巧。希望對大家有所幫助。

  因為.NET的基本正則語法和Perl5基本相同,所以基本語法你可以去下載一下M$的JS幫助文檔,上面有詳細(xì)的說明d表示什么,{,5}表示什么,[表示什么……,這里我只想提醒大家一點,為了避免和反向引用相沖突,在你用n表示八進(jìn)制的ASCII碼時,請在后加0,就是說,在表示ASCII碼時,請這樣寫 。 powered by 25175.net

  替換

  Regex類有一個靜態(tài)的Replace方法,其實例也有一個Replace方法,這個方法很強大,因為它可以傳入一個delegate,這樣,你可以自定義每次捕獲匹配時,如何處理捕獲的內(nèi)容。

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

以上這段代碼說明了如果使用delegate MatchEvaluator 來處理正則的Match結(jié)果,該代碼返回"01 12 03 05"。Replace方法除了使用delegate來處理捕獲的Match,還可以用字符串來替換Match的結(jié)果,而用字符串來替換Match結(jié)果除了把Match結(jié)果靜態(tài)的替換成一個固定的文本外,還可以使用以下語法來更方便的實現(xiàn)你需要的功能:

  

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

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”

就是說,對組一的每個匹配結(jié)果都用"0$1"這個表達(dá)式來替換,"0$1"中"$1"由組1匹配的結(jié)果代入
${name} 把匹配的組名為"name"的組替換成表達(dá)式,

上例的Regex expression改成@"(?<name>d+)(?#這個是注釋)"后面的替換式改為"0${name}"結(jié)果是一樣的
$$ 做$的轉(zhuǎn)義符,如上例表達(dá)式改成@"(?<name>d+)(?#這個是注釋)"和"$$${name}",則結(jié)果為"$1 $12 $3 $5"
$& 替換整個匹配
$` 替換匹配前的字符
$' 替換匹配后的字符
$+ 替換最后匹配的組
$_ 替換整個字符串

 

  

  后面的選項,大家自己寫個例子體味一下。

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

  表達(dá)項選項

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

  

RegexOptions枚舉值 內(nèi)聯(lián)標(biāo)志 簡單說明
ExplicitCapture n 只有定義了命名或編號的組才捕獲
IgnoreCase i 不區(qū)分大小寫
IgnorePatternWhitespace x 消除模式中的非轉(zhuǎn)義空白并啟用由 # 標(biāo)記的注釋。
MultiLine m 多行模式,其原理是修改了^和$的含義
SingleLine s 單行模式,和MultiLine相對應(yīng)

 

  這里我提到內(nèi)聯(lián)標(biāo)志,是因為相對于用RegexOptions在new Regex時定義Regex表達(dá)式的全局選項來說,內(nèi)聯(lián)標(biāo)志可以更小粒度(以組為單位)的定義匹配選項,從而更方便表達(dá)我們的思想

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

原文鏈接:http://www.cnblogs.com/guozhe/archive/2012/01/12/2320180.html

【編輯推薦】

  1. ?*或+正則表達(dá)式使用詳解
  2. 實現(xiàn)正則表達(dá)式匹配任意字符解析
  3. 淺析正則表達(dá)式實現(xiàn)字符串的相關(guān)操作
  4. Java正則表達(dá)式實現(xiàn)條件查詢淺析
  5. 正則表達(dá)式匹配單詞細(xì)節(jié)解析
責(zé)任編輯:彭凡 來源: 博客園
相關(guān)推薦

2009-08-07 14:24:31

.NET正則表達(dá)式

2009-09-16 14:32:43

PHP正則表達(dá)式替換

2018-09-27 15:25:08

正則表達(dá)式前端

2009-08-07 14:31:40

.NET正則表達(dá)式基礎(chǔ)

2020-09-04 09:16:04

Python正則表達(dá)式虛擬機

2009-06-10 13:36:07

Java正則表達(dá)式工具類

2010-01-05 17:46:04

.NET Framew

2009-08-19 14:48:57

正則表達(dá)式性能

2009-08-24 17:14:41

正則表達(dá)式C#和.NET框架

2009-03-24 08:56:15

正則表達(dá)式格式清理字符串

2024-09-14 09:18:14

Python正則表達(dá)式

2009-06-10 13:51:25

Java正則表達(dá)式匹配替換

2016-11-10 16:21:22

Java 正則表達(dá)式

2009-09-16 17:15:57

正則表達(dá)式引擎

2022-01-04 11:35:03

Linux Shel正則表達(dá)式Linux

2023-09-13 08:12:45

2009-08-20 15:10:33

C#正則表達(dá)式

2009-08-20 15:02:41

C#正則表達(dá)式

2009-08-20 15:06:51

C#正則表達(dá)式

2009-08-20 14:57:00

C#正則表達(dá)式
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 欧美一区二区三区在线观看 | 日本欧美视频 | 欧美一区永久视频免费观看 | 午夜免费网 | 一区二区三区亚洲视频 | 午夜视频一区 | 日日摸日日添日日躁av | 欧美一级片在线观看 | 亚洲成人免费观看 | 日日日视频 | 亚洲精品免费视频 | 欧美精品在线观看 | 一区二区视频免费观看 | 亚洲精品一区二区三区蜜桃久 | 黄色大全免费看 | www亚洲精品| 国产精品资源在线 | 欧美极品在线播放 | 日本免费在线 | 欧美日韩精品亚洲 | 午夜精品久久久久久久99黑人 | 91精品国产色综合久久不卡98 | av色站| 日韩一级免费看 | 国产在线麻豆精品入口 | 国产视频第一页 | 成人免费一区二区三区牛牛 | 91久久视频 | 嫩草视频在线免费观看 | 国产真实精品久久二三区 | 国产精品高潮呻吟久久 | 黄色毛片在线播放 | 韩日一区 | 久久精品99 | 久久久久久99| 成人美女免费网站视频 | 国产免费让你躁在线视频 | 亚洲精品一区中文字幕乱码 | 国产精品久久久久一区二区 | 久久男人 | 亚洲欧美自拍偷拍视频 |