【问题标题】:Regular Expression for specific pattern string特定模式字符串的正则表达式
【发布时间】:2017-09-27 05:48:20
【问题描述】:

我想使用下面的正则表达式删除特定的字符串:

输入字符串:

{"t":1,"i":"a32dffdd-c99d-4df5-9296-9ae5fb024dc1","p":"At DB Server Time: Wed Sep 27 2017 05:27:18 GMT+0000 (UTC), you sent this message: {'t':1,'i':'a32dffdd-c99d-4df5-9296-9ae5fb024dc1','p':{'u':'/test/delayed','v':'GET','h':{'X-BH-AgentID':'testagent','X-BH-TempToken':'testagenttemptoken'},'p':'','t':{'t':1000}}}"}

使用正则表达式删除下面的字符串:

At DB Server Time: Wed Sep 27 2017 05:27:18 GMT+0000 (UTC), you sent this message:

我想要下面的输出:

{"t":1,"i":"a32dffdd-c99d-4df5-9296-9ae5fb024dc1","p":" {'t':1,'i':'a32dffdd-c99d-4df5-9296-9ae5fb024dc1','p':{'u':'/test/delayed','v':'GET','h':{'X-BH-AgentID':'testagent','X-BH-TempToken':'testagenttemptoken'},'p':'','t':{'t':1000}}}"}

【问题讨论】:

  • 我不明白你的例子。 “i”属性也必须改变?
  • 如果你想做某事,为什么不去做呢?

标签: c# regex


【解决方案1】:

我认为你可以使用这样的代码:

var input = @"{""t"":1,""i"":""a32dffdd-c99d-4df5-9296-9ae5fb024dc1"",""p"":""At DB Server Time: Wed Sep 27 2017 05:27:18 GMT+0000 (UTC), you sent this message: {'t':1,'i':'a32dffdd-c99d-4df5-9296-9ae5fb024dc1','p':{'u':'/test/delayed','v':'GET','h':{'X-BH-AgentID':'testagent','X-BH-TempToken':'testagenttemptoken'},'p':'','t':{'t':1000}}}""}";
var pattern = @"At\s+DB\s+Server\s+Time:\s+\w{3}\s+\w{3}\s+\d+\s+\d{4}\s+[0-9:]{8}\s+GMT\+\d+\s+\(UTC\)\s*,\s+you\s+sent\s+this\s+message:";
var result = Regex.Replace(input, pattern, string.Empty);

C# Demo

【讨论】:

    【解决方案2】:

    你可以这样做:

    var input = @"{""t"":1,""i"":""a32dffdd-c99d-4df5-9296-9ae5fb024dc1"",""p"":""At DB Server Time: Wed Sep 27 2017 05:27:18 GMT+0000 (UTC), you sent this message: {\""t\"":1,\""i\"":\""a32dffdd-c99d-4df5-9296-9ae5fb024dc1\"",\""p\"":{\""u\"":\""/test/delayed\"",\""v\"":\""GET\"",\""h\"":{\""X-BH-AgentID\"":\""testagent\"",\""X-BH-TempToken\"":\""testagenttemptoken\""},\""p\"":\""\"",\""t\"":{\""t\"":1000}}}""}";
    
    var pattern = @"""At.*message:";
    var replacement = string.Empty;
    
    var rgx = new Regex(pattern);
    string result = rgx.Replace(input, replacement);
    

    您可以在此处找到文档:link to docs.microsoft.com
    基本上,您将要删除的字符串替换为任何内容。

    但请记住:至少尝试做一些事情,而不是让其他人下次为你编写代码:)

    【讨论】:

      【解决方案3】:

      我认为这是在双引号中使用第一个 p 的最佳方法

                  string input = "{\"t\":1,\"i\":\"a32dffdd-c99d-4df5-9296-9ae5fb024dc1\",\"p\":\"At DB Server Time: Wed Sep 27 2017 05:27:18 GMT+0000 (UTC), you sent this message: {'t':1,'i':'a32dffdd-c99d-4df5-9296-9ae5fb024dc1','p':{'u':'/test/delayed','v':'GET','h':{'X-BH-AgentID':'testagent','X-BH-TempToken':'testagenttemptoken'},'p':'','t':{'t':1000}}}\"}";
                  string pattern = "\"p\":[^\\{]+";
                  string mat = Regex.Match(input, pattern).Value;
                  input = Regex.Replace(input,pattern,"\"p\": ");
      

      【讨论】:

        猜你喜欢
        • 2022-09-30
        • 2015-11-28
        • 1970-01-01
        • 2014-04-28
        • 1970-01-01
        • 2019-11-09
        • 2021-05-06
        • 1970-01-01
        • 2015-12-13
        相关资源
        最近更新 更多