2

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

我有这个字符串

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

我想获得“

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

谢谢你的帮助。

4

4 回答 4

5

这将在引号之间捕获:

(?<=")[\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);
}
于 2012-08-10T13:24:56.637 回答
3

由于这看起来像 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);
}

不过似乎有点矫枉过正。

于 2012-08-10T13:52:42.543 回答
1

在我看来,这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);
}

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

于 2012-08-10T13:36:52.867 回答
0

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

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

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

var values = csvString.Split(',').Select(s => s.Replace("\"", "").Trim());
于 2012-08-10T13:41:25.910 回答