1

私はこの正規表現を持っています

("[^"]*")|('[^']*')|([^<>]+)

この入力文字列を渡すと

<telerik:RadTab Text="RGB">

合わせたいRGBです。ただし、最後の選択肢は文字列が長くなるため、そうではありません。

私が理想的に欲しいのはこれです:

  1. 二重引用符で囲まれた部分文字列がある場合は、二重引用符を含めて一致させます。
  2. それ以外の場合、単一引用符で囲まれた部分文字列がある場合は、単一引用符を含めて一致させます。
  3. それ以外の場合、山かっこで囲まれた文字列がある場合は、山かっこを含めずに一致させます。

このロジックは単一の正規表現で実行できますか?

4

3 に答える 3

3
    var strings = new[]
        {"<telerik:RadTab Text=\"RGB\">", "<telerik:RadTab Text=RGB>", "<telerik:RadTab Text='RGB'>"};
    var r = new Regex("<([^<\"']+[^>\"']+)>|(\"[^\"]*\")|('[^']*')");
    foreach (var s1 in strings)
    {
        Console.WriteLine(s1);
        var match = r.Match(s1);
        Console.WriteLine(match.Value);
        Console.WriteLine();
    }
    Console.ReadLine();
于 2013-11-04T21:11:27.450 に答える