使用RegEx和C#解析字符串

时间:2011-09-30 13:12:50

标签: c# regex parsing

我有以下正则表达式 -

 string s = "{\"data\": {\"words\": [{\"wordsText\": \"Three Elephants /d 
 in the jungle\"}]}}";

    string[] words = s.Split('\\',':','[',']','{','}','"');
    foreach (string word in words)
    {
        Console.WriteLine(word);
    }

哪些输出 -

data

words

wordsText

Three Elephants /d in the jungle

摆脱输出中前3行的最佳方法是什么,这样我才能得到最后一行 - Three Elephants /d in the jungle

我相信如果我在"wordsText\":之后写出所有文字,这可能是一种可能的方法,我们非常感谢任何帮助。

2 个答案:

答案 0 :(得分:6)

你可以肯定使用RegEx,但是因为它看起来像JSON你最好用JSON.NET解析它。

JObject o = JObject.Parse(@"{
  ""Stores"": [
    ""Lambton Quay"",
    ""Willis Street""
  ],
  ""Manufacturers"": [
    {
      ""Name"": ""Acme Co"",
      ""Products"": [
        {
          ""Name"": ""Anvil"",
          ""Price"": 50
        }
      ]
    },
    {
      ""Name"": ""Contoso"",
      ""Products"": [
        {
          ""Name"": ""Elbow Grease"",
          ""Price"": 99.95
        },
        {
          ""Name"": ""Headlight Fluid"",
          ""Price"": 4
        }
      ]
    }
  ]
}");

string name = (string)o.SelectToken("Manufacturers[0].Name");
// Acme Co

decimal productPrice = (decimal)o.SelectToken("Manufacturers[0].Products[0].Price");
// 50

string productName = (string)o.SelectToken("Manufacturers[1].Products[0].Name");
// Elbow Grease

请参阅:Json.Net Select Token

这使用JSON.NET Library

答案 1 :(得分:0)

我会在C#中使用正则表达式,你的表达式就像这样

MatchCollection matchCtrls = Regex.Matches(pageText, @"Th(.*)e", RegexOptions.Singleline);

如果你不知道具体的文字是什么,那么可能是这样的

MatchCollection matchCtrls = Regex.Matches(pageText, @"": \(.*)\", RegexOptions.Singleline);