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

鞏留網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)公司公司2013年成立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司。
- Code
- string x = "Live for nothing,die for something";
- Regex r1 = new Regex(@".*thing");
- if (r1.IsMatch(x))
- {
- Console.WriteLine("match:" + r1.Match(x).Value);
- //輸出:Live for nothing,die for something
- }
- Regex r2 = new Regex(@".*?thing");
- if (r2.IsMatch(x))
- {
- Console.WriteLine("match:" + r2.Match(x).Value);
- //輸出:Live for nothing
- }
使用“(?>…)”方式進(jìn)行非回溯聲明。由于C#正則表達(dá)式引擎的貪婪特性,導(dǎo)致它在某些情況下,將進(jìn)行回溯以獲得匹配,請看下面的示例:
- Code
- string x = "Live for nothing,die for something";
- Regex r1 = new Regex(@".*thing,");
- if (r1.IsMatch(x))
- {
- Console.WriteLine("match:" + r1.Match(x).Value);
- //輸出:Live for nothing,
- }
- Regex r2 = new Regex(@"(?>.*)thing,");
- if (r2.IsMatch(x))//不匹配
- {
- Console.WriteLine("match:" + r2.Match(x).Value);
- }
在r1中,“.*”由于其貪婪特性,將一直匹配到字符串的***,隨后匹配“thing”,但在匹配“,”時(shí)失敗,此時(shí)引擎將回溯,并在“thing,”處匹配成功。
在r2中,由于強(qiáng)制非回溯,所以整個(gè)表達(dá)式匹配失敗。以上介紹C#正則表達(dá)式引擎的貪婪特性。
【編輯推薦】
- C#結(jié)構(gòu)體的特點(diǎn)淺析
- 介紹C#窗體拖動事件
- C#讀取Excel遇到無法讀取的解決方法
- 概述C#.NET操作XML
- C#基礎(chǔ)概念學(xué)習(xí)筆記
文章題目:C#正則表達(dá)式引擎貪婪特性
網(wǎng)頁URL:http://m.fisionsoft.com.cn/article/djdissg.html


咨詢
建站咨詢
