处理字符:[t1]<f1><f2><f3><f4>
结果产生4行:
[t1]<f1>
[t1]<f2>
[t1]<f3>
[t1]<f4>如上,能通过一条正则表达式实现吗?可以的话不用委托来写
谢谢!

解决方案 »

  1.   


    private static void TestRegex09()
    {
        string yourStr = @"[t1]<f1><f2><f3><f4>";
        Match m = Regex.Match(yourStr, @"(\[[^\[\]]+\])(<[^<>]+>)+");
        if (!m.Success) return;
        StringBuilder builder = new StringBuilder();
        foreach (Capture c in m.Groups[2].Captures)
        {
            builder.AppendLine(m.Groups[1].Value + c.Value);
        }
        Console.WriteLine(builder.ToString());
    }
      

  2.   

    刚看到站内信如查<...>数量固定的话,可以不用委托,如果数量不固定,那还是得用委托来处理,方式如无牙的,当然也可以写成Replace的
    string test = "[t1]<f1><f2><f3><f4>";
    Regex reg = new Regex(@"(\[[^\[\]]*\])(<[^<>]*>)+");
    string result = reg.Replace(test, delegate(Match m)
    {
        StringBuilder sbuilder = new StringBuilder();
        foreach (Capture c in m.Groups[2].Captures)
        {
            sbuilder.Append(m.Groups[1].Value);
            sbuilder.Append(c.Value);
            sbuilder.Append("\n");
        }
        return sbuilder.ToString();
    });
    richTextBox2.Text = result;