【问题标题】:c# using regex to parse string between quotesc# 使用正则表达式解析引号之间的字符串
【发布时间】:2012-08-10 13:22:56
【问题描述】:

我还很新,我无法让它正常工作。

我有这个字符串

["string1","string2","string3","string4","string5","string6","string7","string8","string9","string10"]

我想获取“

之间的所有值

我认为正则表达式最适合完成这项任务。

感谢您的帮助。

【问题讨论】:

标签: c# regex string parsing


【解决方案1】:

这将在引号之间捕获:

(?<=")[\w]+(?!=")

扩展示例:

string s = "[\"string1\",\"string2\",\"string3\",\"string4\",\"string5\",\"string6\",\"string7\",\"string8\",\"string9\",\"string10\"]";

foreach (Match m in Regex.Matches(s, "(?<=\")[\\w]+(?!=\")")) {
    Console.WriteLine(m.Value);
}

【讨论】:

  • OP,这比拆分版更好。
  • @RyanCopley 你能解释一下为什么你认为它比拆分字符串更好吗? IMO 使用正则表达式进行像这样的简单字符串操作是矫枉过正的。使用拆分也比使用正则表达式更有效......
  • 单次使用场景的效率值得商榷..但我们正在推测:)我希望它在某种程度上有所帮助:)
  • @SimonWhitehead 没错,但是,正则表达式应该用于匹配数据,而不是解析。
  • 您能否改进它,使其也适用于引号内的空格?
【解决方案2】:

由于这看起来像 JSON,请尝试使用 JavaScriptSerializer

string myString = "[\"string1\",\"string2\",\"string3\",\"string4\",\"string5\",\"string6\",\"string7\",\"string8\",\"string9\",\"string10\"]";

string[] strings = (new JavaScriptSerializer()).Deserialize<string[]>(myString);

foreach (string str in strings)
{
    Console.WriteLine(str);
}

不过似乎有点矫枉过正。

【讨论】:

    【解决方案3】:

    在我看来,这是Split 的工作,而不仅仅是正则表达式:

    string str = "[\"string1\",\"string2\",\"string3\",\"string4\",\"string5\",\"string6\",\"string7\",\"string8\",\"string9\",\"string10\"]";
    Regex rgx = new Regex("[\\[\\]\"]"); // get rid of the quotes and braces
    str = rgx.Replace(str,""); 
    string [] split = str.Split(','); // split on commas. that's it.
    
    foreach (string s in split)
    {
        Console.WriteLine(s);
    }
    

    这不需要特殊的匹配正则表达式,如果引用的字符串变得混乱,您可以更改它。因此,它(再次,在我看来)更优雅。

    【讨论】:

      【解决方案4】:

      如果你的意思是你有一个 CSV 字符串,例如

      "\"string1\", \"string2\", \"string3\"" 
      

      那么像这样微不足道的事情你不需要正则表达式,你可以使用 String.Split 和一些 LINQ:

      var values = csvString.Split(',').Select(s => s.Replace("\"", "").Trim());
      

      【讨论】:

      • 如果引用的字符串包含逗号,您将无法执行此操作。
      • @alltej 我没有说这是一个通用的解决方案,它适用于给定的示例数据:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-13
      • 2013-07-18
      • 1970-01-01
      相关资源
      最近更新 更多