.NET 正則表達(dá)式使用高級(jí)技巧之替換類介紹
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á)不清楚意思,還是來(lái)個(gè)例子吧: public static void Main() 這段代碼返回的是 “01 012 03 05” |
| ${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è)是注釋)說(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ū)分大小寫 |
| 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è)組為匹分大小寫的,一個(gè)組不匹分大小寫的,是不是很方便呢?
相關(guān)文章
Javascript 字符串字節(jié)長(zhǎng)度計(jì)算函數(shù)代碼與效率分析(for VS 正則)
下面的函數(shù)都是用于計(jì)算字符串長(zhǎng)度,英文算一個(gè),中文算兩個(gè)。效果一樣,效率卻未必一樣,大家可以自行選擇下。2009-12-12
僅1個(gè)例子輕松學(xué)習(xí)正則表達(dá)式
這篇文章主要通過(guò)舉例理解正則表達(dá)式,從一個(gè)例子深入解析正則表達(dá)式的使用方法,感興趣的小伙伴們可以參考一下2015-12-12
正則表達(dá)式中問(wèn)號(hào)(?)的正確用法詳解
本文主要介紹了正則表達(dá)式中問(wèn)號(hào)(?)的正確用法詳解,主要介紹了4種用法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05
javascript 數(shù)字的正則表達(dá)式集合
這里收集的是驗(yàn)證數(shù)字的正則表達(dá)式集合,比較的全了,需要驗(yàn)證數(shù)字的朋友很值得參考下。2010-04-04
JavaScript正則表達(dá)式驗(yàn)證中文實(shí)例講解
JavaScript經(jīng)常會(huì)驗(yàn)證中文本文將提供使用正則表達(dá)式實(shí)現(xiàn),接下來(lái)介紹兩個(gè)實(shí)例,感興趣的你可不要錯(cuò)過(guò)了哈,希望本例知識(shí)點(diǎn)可以幫助到你2013-02-02

