国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - 正則表達式 - .NET 正則表達式使用高級技巧之替換類介紹

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

2020-08-03 17:41正則之家 正則表達式

因為.net的基本正則語法和Perl5基本相同,所以基本語法你可以去下載一下M$的JS幫助文檔,上面有詳細的說明

\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中定義一個組為匹分大小寫的,一個組不匹分大小寫的,是不是很方便呢?

 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日韩成人在线播放 | 99亚洲伊人久久精品影院红桃 | 亚洲 精品 综合 精品 自拍 | 欧美精品一区在线观看 | 狼人综干网 | 亚洲国产一区二区三区精品 | 国产精品a级 | 日韩在线免费电影 | 日韩色综合| 国产成人精品久久二区二区 | 亚洲精品中字 | 欧美日韩精品网站 | 国产一区二区三区在线免费看 | 成人高清网站 | 久久久小视频 | 亚洲精品电影在线观看 | 免费观看日本视频 | 福利视频网址导航 | 中文字幕av一区二区三区 | 久久精品一 | 亚洲一区二区三区蜜桃 | 日本在线免费观看 | 亚洲精品二区三区 | 一区二区三区在线观看视频 | 亚洲人视频在线观看 | av在线入口 | 爱色区综合网 | 国产精品久久久久久久久福交 | 日韩成人影片 | 91精品国产综合久久久久久 | 偷拍呻吟高潮91 | 一级黄色片网站 | 911av视频 | 日本激情免费 | 日韩免费电影 | 亚洲精品久久久久久久久久久久久 | 亚州男人天堂 | 狠狠躁夜夜躁人人爽天天高潮 | 中文字幕视频在线观看 | 久久久精品日本 | 免费成人av在线 |