1

今、私はこのような長い文字列を持っています

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

" "Unicode 文字の間でさえ、何かが存在する可能性があります。私はこのようなものを使用しました

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

ただし、1つずつ返すのではなく、すべてを返すだけです。グループとキャプチャ プロパティを使用しました。キャプチャ コレクションには、一致したすべての情報がありますが、必要なものを抽出できません。""間のすべてを1つずつ抽出する必要があります。を抽出する必要はありません。{ } " "それぞれの間のコンテンツだけ" "です。

したがって、私の場合、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

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 に答える
0
string pattern = "\"([\u0000-\uffff])+\""; 

トリックを行う必要があります。

于 2012-08-30T10:10:48.693 に答える