自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C#正則表達式引擎貪婪特性

開發(fā) 后端
本文介紹C#正則表達式引擎貪婪特性,只要模式允許,它將匹配盡可能多的字符,以及介紹由于C#正則表達式引擎的貪婪特性,導(dǎo)致它在某些情況下,將進行回溯以獲得匹配。

C#正則表達式引擎貪婪特性,只要模式允許,它將匹配盡可能多的字符。通過在“重復(fù)描述字符”(*,+)后面添加“?”,可以將匹配模式改成非貪婪。請看以下示例:

  1. Code  
  2. string x = "Live for nothing,die for something";  
  3. Regex r1 = new Regex(@".*thing");  
  4. if (r1.IsMatch(x))  
  5. {  
  6. Console.WriteLine("match:" + r1.Match(x).Value);  
  7. //輸出:Live for nothing,die for something  
  8. }  
  9. Regex r2 = new Regex(@".*?thing");  
  10. if (r2.IsMatch(x))  
  11. {  
  12. Console.WriteLine("match:" + r2.Match(x).Value);  
  13. //輸出:Live for nothing  

使用“(?>…)”方式進行非回溯聲明。由于C#正則表達式引擎的貪婪特性,導(dǎo)致它在某些情況下,將進行回溯以獲得匹配,請看下面的示例:

  1. Code  
  2. string x = "Live for nothing,die for something";  
  3. Regex r1 = new Regex(@".*thing,");  
  4. if (r1.IsMatch(x))  
  5. {  
  6. Console.WriteLine("match:" + r1.Match(x).Value);  
  7. //輸出:Live for nothing,  
  8. }  
  9. Regex r2 = new Regex(@"(?>.*)thing,");  
  10. if (r2.IsMatch(x))//不匹配  
  11. {  
  12. Console.WriteLine("match:" + r2.Match(x).Value);  

在r1中,“.*”由于其貪婪特性,將一直匹配到字符串的***,隨后匹配“thing”,但在匹配“,”時失敗,此時引擎將回溯,并在“thing,”處匹配成功。
在r2中,由于強制非回溯,所以整個表達式匹配失敗。以上介紹C#正則表達式引擎的貪婪特性。

【編輯推薦】

  1. C#結(jié)構(gòu)體的特點淺析
  2. 介紹C#窗體拖動事件
  3. C#讀取Excel遇到無法讀取的解決方法
  4. 概述C#.NET操作XML
  5. C#基礎(chǔ)概念學(xué)習(xí)筆記
責(zé)任編輯:佚名 來源: 百度空間
相關(guān)推薦

2009-08-20 13:48:37

C#正則表達式

2009-08-17 13:56:28

C#正則表達式入門

2009-08-03 17:27:14

C#正則表達式

2009-08-07 15:16:10

C#正則表達式

2009-08-20 16:13:32

C#正則表達式匹配

2009-08-11 13:00:41

C#正則表達式

2009-08-13 15:24:27

C#正則表達式

2009-09-16 17:15:57

正則表達式引擎

2024-12-16 07:33:45

C#正則表達式

2021-03-02 07:33:13

開發(fā)C#字符

2009-08-14 15:50:45

C#正則表達式

2009-08-20 15:10:33

C#正則表達式

2009-08-20 15:06:51

C#正則表達式

2009-08-20 15:02:41

C#正則表達式

2009-08-14 17:52:30

C#表達式工具

2009-08-20 14:57:00

C#正則表達式

2011-07-06 11:04:42

C#正則表達式

2009-08-27 15:45:30

C#正則表達式

2009-08-24 17:14:41

正則表達式C#和.NET框架

2009-08-20 16:23:32

C#正則表達式語法
點贊
收藏

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