1. 程式人生 > >C#中使用正則的貪婪和非貪婪模式,以及分組

C#中使用正則的貪婪和非貪婪模式,以及分組

正則表示式一不用就忘掉了,之前寫的都是JS的正則,這裡記錄一下c#的正則怕以後忘記,這裡用的是獲取雙引號用的內容

            string str = "a: 3:{ i: 1; s: 51:\"images /2/2017/06/c4ZElEp2elObaCme7XXevlcZacZlyL.jpg\"; i: 2; s: 51:\"images/2/2017/06/Ur2T7GDzcGWZwgYw2Trsbd38br352d.jpg\"; i: 3; s: 51:\"images/2/2017/06/ET94c4qn1qz4141o41q4idI4ZC1Mwt.jpg\"; }";
            //初始化字串
            //定義正則表示式規則 (非貪婪模式)
            Regex reg = new Regex("(\").+?(\")");
            //返回一個結果集
            MatchCollection result = reg.Matches(str);
            //遍歷每個結果
            foreach (Match m in result)
            {
                this.listBox1.Items.Add(m.ToString());
            }


以上是非貪婪模式。。

下面的是貪婪模式

            string str = "a: 3:{ i: 1; s: 51:\"images /2/2017/06/c4ZElEp2elObaCme7XXevlcZacZlyL.jpg\"; i: 2; s: 51:\"images/2/2017/06/Ur2T7GDzcGWZwgYw2Trsbd38br352d.jpg\"; i: 3; s: 51:\"images/2/2017/06/ET94c4qn1qz4141o41q4idI4ZC1Mwt.jpg\"; }";
            //初始化字串
            //定義正則表示式規則
            Regex reg = new Regex("(\").+(\")");
            //返回一個結果集
            MatchCollection result = reg.Matches(str);
            //遍歷每個結果
            foreach (Match m in result)
            {
                this.listBox1.Items.Add(m.ToString());
            }


另外有的時候,會發現,獲取到的m.Tostring()裡面會包含了 雙引號    如果需要去除雙引號 需要用到分組:

那麼程式碼就是:

      string str = "a: 3:{ i: 1; s: 51:\"images /2/2017/06/c4ZElEp2elObaCme7XXevlcZacZlyL.jpg\"; i: 2; s: 51:\"images/2/2017/06/Ur2T7GDzcGWZwgYw2Trsbd38br352d.jpg\"; i: 3; s: 51:\"images/2/2017/06/ET94c4qn1qz4141o41q4idI4ZC1Mwt.jpg\"; }";
            //初始化字串
            //定義正則表示式規則
            Regex reg = new Regex("(\")(?<path>.+?)(\")");
            //返回一個結果集
            MatchCollection result = reg.Matches(str);
            //遍歷每個結果
            foreach (Match m in result)
            {
                this.listBox1.Items.Add(m.Groups["path"].Value);
            }

那麼就會得到 想要的結果集合了。

好了,就到這裡,隨著知識量越來越廣,很多東西也怕以後忘記,能快速找回,寫個部落格記錄下

相關推薦

C++過載、覆蓋隱藏的區別以及適用場景

一、過載、覆蓋和隱藏的區別 二、適用場景 1、過載:   適用於不同的資料型別都需要使用到的功能函式。以資料相加的函式為例,可以在同一個檔案內提供以下的過載函式以支援同樣的功能:   int add(int, int);/*2個整數相加*/   int add(int, int, int);/*3個整數相

C#使用貪婪貪婪模式以及分組

正則表示式一不用就忘掉了,之前寫的都是JS的正則,這裡記錄一下c#的正則怕以後忘記,這裡用的是獲取雙引號用的內容 string str = "a: 3:{ i: 1; s: 51:\"images /2/2017/06/c4ZElEp2elObaC

表示式(re模組匹配單個字元匹配多個字元匹配分組python貪婪貪婪r的作用)

re.match() 能夠匹配出以xxx開頭的字串 匹配單個字元 示例1: . #coding=utf-8 import re ret = re.match(".","M") print(ret.group()) ret = re.match("t.o","too") print

Python貪婪貪婪

       Python貪婪和非貪婪             Python裡數量詞預設是貪婪的(在少數語言裡也可能是預設非貪婪),總是嘗試匹配儘可能多的字元; 非貪婪則相反,總是嘗試匹配儘可能少的字元。 在"*","?","+","{m,n}"後面加上?,使貪婪變成非

貪婪貪婪

貪婪匹配:當正則表示式中包含能接受到重複的限定符時,通常的行為是匹配儘可能多的字元,這中匹配方式叫做貪婪匹配。特徵是一次性讀入整個字串經行匹配,每當不匹配就捨棄最右邊一個字元,繼續匹配,依次匹配和捨棄,直到匹配成功或者把整個字串捨棄為止,因此它是一種最大化資料返回,能多不會少。 前面我們講過重複限

python貪婪貪婪

Python裡數量詞預設是貪婪的(在少數語言裡也可能是預設非貪婪),總是嘗試匹配儘可能多的字元;非貪婪則相反,總是嘗試匹配儘可能少的字元。在"*","?","+","{m,n}"後面加上?,使貪婪變成非貪婪。 >>> s="This is a number 234-235-

C#表示式與回車換行符

C#中,讀取文字檔案內容,裡面往往有許多回車換行符(“\r\n”),雖然一般不可見,但卻實實在在的存在。這時候,使用正則表示式進行匹配,需要考慮其存在。今天就遇到這樣一個問題: 有文字檔案內容如下:

C#表示式使用介紹

  4.4 匹配、組和捕獲   一般表示式的一個很好的特性是可以把字元組合起來,方式與C#中的複合語句一樣。在C#中,可以通過把任意數量的語句放在花括號中的方式把它們組合在一起。其結果就像一個複合語句那樣。在一般表示式模式中,也可以把任何字元組合起來(包括元字元和轉義序列),像處理一個字元那樣處理它們。唯一

python基礎:re模塊匹配時貪婪貪婪模式

audio 貪婪 數字 表達 字符串 true 數量 我們 順序 python貪婪和非貪婪   正則表達式通常用於在文本中查找匹配的字符串。Python裏數量詞默認是貪婪的(在少數語言裏也可能是默認非貪婪),總是嘗試匹配盡可能多的字符;非貪婪則相反,總是嘗試匹配盡可能少的字

表達式------命名子模式做數組的鍵

mvc eight [1] count name min ray 正則 d+ 在正則表達式的實際應用中,我們經常需要將匹配出的模式進行命名,以命名的鍵值對形式放在數組中,常見的應用如:MVC模式中的路由。 命名子模式的語法:(?P<name>pattern)

關係型資料庫關係型資料庫以及hive資料倉庫的區別

關係型資料庫:Mysql,Oracle 非關係型資料庫:Redis,MongoDB,HBASE 類SQL資料庫:hive 具體地: 關係型資料庫(Mysql和Oracle) 1.表和表、表和欄位、資料和資料存在著關係 優點: 1.資料之間有關係,進行資料的增刪改

C#override重寫與new隱藏的區別以及C#與Java的Override區別

在C#中:override重寫,是指對父類中的虛方法(標記為override)或抽象方法(標記為abstract)進行重寫,實現新的功能,它必須與父類方法的簽名完全一致,而且與父類方法的可訪問性也必須一致new方法隱藏,是指在子類中重新定義一個簽名與父類的方法相同的方法,這個

js表示式的貪婪模式貪婪模式

在講貪婪模式和惰性模式之前,先回顧一下JS正則基礎: 寫法基礎: ①不需要雙引號,直接用//包含 => /wehfwue123123/.test(); ②反斜槓\表示轉義 =>/\.jpg$/ ③用法基礎:.test(str); 語法: ①錨點類 /^a/=&g

Python表示式的貪婪模式貪婪模式

貪婪模式是把所有匹配的獲取到,非貪婪模式只取到第一個匹配到的字串,在python中findall和match的區別。 http://blog.csdn.net/qq_33447462/article/details/51485900 .*與.*?的區別:

[ 轉載 ] 什麽是表達式的貪婪貪婪匹配

blog 環視 北京市 正則表達式 clas 第一個 pat exp com http://www.cnblogs.com/xudong-bupt/p/3586889.html 1.什麽是正則表達式的貪婪與非貪婪匹配 如:String str="abcaxc"; Patte

Python匹配使用findall,捕獲分組(xxx)捕獲分組(?:xxx)的差異

bbb tps img 是把 區別 內容 是我 解答 什麽是 轉自:https://blog.csdn.net/qq_42739440/article/details/81117919 下面是我在用findall匹配字符串時遇到的一個坑,分享出來供大家跳坑。 例題: 如圖

表達式:貪婪貪婪

move www emp echo 無法 rem 但是 耗資源 loaded 前言 在一段時間內,一直不知道.*和.*?之間的區別,一直單純的覺得兩者之間並沒有什麽區別,都是匹配任意字符,知道今天才知道其中的區別 簡要介紹 首先從一個簡單的問題的問題開始思考: 有這樣一個字

關於表示式數量詞的貪婪貪婪模式

在匹配正則的時候或許會遇到返回的結果多幾個字元或者少幾個字元,什麼原因呢,這個就是正則的貪婪與非貪婪模式,假設,我的匹配字元是: a = 'asdf444adfadf   adfsadf' 正則表示式的貪婪模式: [a-z]{2,6} 列印結果 ['asdf',

python表示式貪婪貪婪模式

之前做程式的時候看到過正則表示式的貪婪與非貪婪模式,今天用的時候就想不起來了,現在這裡總結一下,以備自己以後用到注意。 1.什麼是正則表示式的貪婪與非貪婪匹配   如:String str="abcaxc";     Patter p="ab.*c";   貪婪匹配:正則表示式一般趨向於最大長度匹配,

Python表示式的貪心模式貪心模式

宣告:最近發現有人利用我在百度雲盤裡免費分享的127課Python視訊盈利,並聲稱獲得我的授權。