1

现在我有一个像这样的长字符串

{"" ,"" ,"" ,"" } , {"" ,"" ,"" ,"" } 

" "甚至Unicode字符之间也可能有任何东西。我用过这样的东西

string pattern = "\"([\u0000-\uffff]+)+\""; 

但它只是返回所有内容而不是一一返回。我使用了 Groups 和 Capture 属性,Capture Collection 包含所有匹配的信息,但我仍然无法提取我需要的内容。我需要""一一提取两者之间的所有内容。我不需要提取{ } " "每个" ".

所以在我的情况下应该返回8组,我该怎么做?

4

3 回答 3

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[]

于 2012-08-30T10:17:01.063 回答
0
string pattern = "\"([\u0000-\uffff])+\""; 

应该做的伎俩。

于 2012-08-30T10:10:48.693 回答
0

如果 pattern","是可靠的分隔符(不能显示为文本)并且大括号和引号之间没有空格,则可以使用以下方法:

        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('"');
于 2012-08-30T10:27:44.430 回答