我很新,我无法正常工作。
我有这个字符串
[ “字符串1”, “字符串2”, “STRING3”, “串,4”, “STRING5”, “string6”, “string7”, “string8”, “string9”, “string10”]
我希望获得“
之间的所有值我认为正则表达式最适合完成任务。
感谢您的帮助。
答案 0 :(得分: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);
}
答案 1 :(得分: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);
}
有点似乎有点矫枉过正。
答案 2 :(得分: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);
}
这不需要特殊的匹配正则表达式,如果引用的字符串变得混乱,您可以更改。因此,它(在我看来)更优雅。
答案 3 :(得分:0)
如果您的意思是拥有CSV字符串,例如
"\"string1\", \"string2\", \"string3\""
然后你不需要像这样简单的正则表达式,你可以使用String.Split和LINQ:
var values = csvString.Split(',').Select(s => s.Replace("\"", "").Trim());