C# regex replace(模糊取代)

我最近遇到了需要把接收到的垃圾 string ,要把某個區間的字串給刪掉但卻苦無找不到辦法

後來詢問了一下老友才得知,如果需要取代某一塊區間的資料並須使用 Regex(正規表示式) 😰😰

這....真的考倒我了,我對Regex(正規表示式) 理解超少使用的範圍又僅限於數字跟英文字...

後來我得知了 https://rubular.com/ 

這真的救了我,話不多說直接切入正題

我現在要把一串string的一部分取代成為空字串(如下)

 

 

 

            string r1 = @"
{
    'responseCode': '0000',
    'responseData': [
        {
            'arrived_datetime': '2020/07/01 16:53',
            'link_url': 'https://xxxx.xxx.com/estore/xxxx/xxxSearch?cid={'act':'orderSearch','oid':'sdfsd','rid':'fsdf'}&tid={tid}',
            'order_amount': 650,
            'order_datetime': '2020/06/22 16:52',
            'order_id': 'HQ200622318753',
            'order_status': '訂單取消',
            'source_name': '網路門市',
            'title_name': '訂單編號'
        }
    ],
    'responseNote': '成功'
}
        ";

我需要取代 {'act':'orderSearch','oid':'sdfsd','rid':'fsdf'}&tid={tid} 的一段的內容為string.Empty

當然我可以直接replace取代,但因為這一塊裡面的內容物變數會取代所以我規範的範圍是

{'act  到 ={tid} 這之間的所有內容,在朋友的指示下測試了一下 Rubular 

恩....結果很是滿意(反白的部分就是他會依據 your regular expression 的規則來做區間判別)

搞定了正規表示式以後直接拿剛剛,整理出來的正規表示式來取代

       string Pattern = "{'act.+={tid}";
       Regex regex = new Regex(Pattern);
       r1 = regex.Replace(r1, ""); 

然後最後的結果會變成

{
    'responseCode': '0000',
    'responseData': [
        {
            'arrived_datetime': '2020/07/01 16:53',
            'link_url': 'https://xxxx.xxx.com/estore/xxxx/xxxSearch?cid=',
            'order_amount': 650,
            'order_datetime': '2020/06/22 16:52',
            'order_id': 'HQ200622318753',
            'order_status': '訂單取消',
            'source_name': '網路門市',
            'title_name': '訂單編號'
        }
    ],
    'responseNote': '成功'
}
        

備註

這次我沒找到的正規表示式為 .+ 

.+ 表達的意思是 "中間可以是多個任何字串"

希望這篇可以幫助到也想做模糊取代的人