繁体   English   中英

c#使用正则表达式解析引号之间的字符串

[英]c# using regex to parse string between quotes

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

我有这个字符串

[ “字符串1”, “字符串2”, “STRING3”, “串,4”, “STRING5”, “string6”, “string7”, “string8”, “string9”, “string10”]

我希望得到“之间的所有价值”

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

谢谢你的帮助。

这将在引号之间捕获:

(?<=")[\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);
}

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

有点似乎有点矫枉过正。

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

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

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

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

那么你不需要像这样简单的正则表达式,你可以使用带有LINQ的String.Split

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM