现在我有一个像这样的长字符串
{"" ,"" ,"" ,"" } , {"" ,"" ,"" ,"" }
" "
甚至Unicode字符之间可能存在任何内容。我用过这样的东西
string pattern = "\"([\u0000-\uffff]+)+\"";
但它只返回所有内容而不是一个一个地返回。
我使用了Groups和Capture属性,Capture Collection有关于所有匹配的信息,但我仍然无法提取我需要的东西。我需要逐一提取""
之间的所有内容。我不需要提取{ } " "
,只需提取每个" "
之间的内容。
所以在我的情况下应该返回8组,我该怎么做?
答案 0 :(得分:1)
使用非贪婪捕获
string pattern = "\"([\u0000-\uffff])*?\"";
然后使用系统linq获取结果......
var matches=Regex.Matches(input,pattern).OfType<Match>();
var results=matches.Select(g=>g.Groups[1].Value).ToArray();
结果现在是一个包含所有匹配项的String []
答案 1 :(得分:0)
string pattern = "\"([\u0000-\uffff])+\"";
应该这样做。
答案 2 :(得分:0)
如果模式","
是可靠的分隔符(不能显示为文本),并且花括号和引号之间没有空格,则可以使用此方法:
string input = @"{""a"",""b"","" my name is ""vul"" and it's nice "",""""},{"""","""","""",""""}";
input = input
.Replace("{", String.Empty)
.Replace("}", String.Empty);
var strings = input.Split(new string[] {@""","""}, StringSplitOptions.None);
strings[0] = strings[0].TrimStart('"');
strings[strings.Length - 1] = strings[strings.Length - 1].TrimEnd('"');