private string UbbToHtmlForB(string str)
    {
        Regex regex = new Regex(@"(\[)(b\])(.)(\[/)(\2)");
        MatchCollection matches = regex.Matches(str);
        foreach (Match m in matches)
        {
            str = str.Replace(m.Groups[0].ToString(), "<b>" + m.Groups[3].ToString() + "</b>");
        }
        if (str.IndexOf("") > -1)
        {
            str = UbbToHtmlForB(str);
        }
        return str;
    }调用:UbbToHtmlForB("[b][b]a[/b]b")得到的结果是:<b>a</b><b>b</b>如果我想要得到<b><b>a</b></b><b>b</b>要怎么修改正则。

解决方案 »

  1.   

            if (regex.Matches(str).Count > 0)
            {
                str = UbbToHtmlForB(str);
            }
    以上修改了一语句,免得出现死循环现象。
      

  2.   

    Sorry,I don't know!
    Help up!!!
      

  3.   

    直接replace("[","<");replace("]",">");不可以吗?
    要是从很多html中获得的话 就先match到再replace, 应该可以!
      

  4.   

    楼主参考一下.这个只能针对楼主所给出的信息进行匹配
    private string UbbToHtmlForB(string str)
        {
            string regex = "(\\)\\[(b)\\](a)\\[(/b)\\](\\)\\[(b)](b)\\[(/b)]";        string result=Regex.Replace(content, regex, "$1<$2>$3<$4>$5<$6>$7<$8>");
            return result;
        }
      

  5.   

    直接用replace,替换[为<,]为>