问题是这样的,下面是两个标签
{mylabel type="title"/}
这个标签的意思是显示一个文章的标题
{mylabel type="articleList" wordlength="30" articleTypeId="20"/}
这个标签的意思是显示文章所属类型的id为20的文章列表,标题最大长度为30,超过部分用省略号代替
现在的问题是:要用正则表达式匹配出这个标签,并且获取里面的属性。
如:一个页面中有多个这样的标签,把这些标签都获取到,然后根据id的不同以及其他相关的属性的不同替换成不同的内容。
请问实现的方法

解决方案 »

  1.   

    标签自己定义的,replace不就完啦?
      

  2.   


    @"(?<=\{mylabel)(?<mylabel>[^{}]*)(?=\})",
      

  3.   


    string str="{mylabel type=\"title\"/}{mylabel type=\"articleList\" wordlength=\"30\" articleTypeId=\"20\"/}";
    System.Text.RegularExpressions.Regex  reg=new  System.Text.RegularExpressions.Regex(@"\{mylabel\s+type=""(?<type>[^""\{\}]\w+)""(\s+wordlength=""(?<wordlength>[^""\{\}]\d+)""\s+articleTypeId=""(?<articleTypeId>[^""\{\}]\d+)"")?/\}",System.Text.RegularExpressions.RegexOptions.IgnoreCase);  
    System.Text.RegularExpressions.MatchCollection m = reg.Matches(str); //设定要查找的字符串
    for (int i = 0; i < m.Count; i++)
    {
       Response.Write(m[i].Groups["type"].ToString()+"<br>");
    }
      

  4.   

    m[i].Groups["type"] 请问这句里面Group["type"]里的Type是可以获取标签里面所有的键—值吗?
    在这句后面可不可以这样获取这些值:
    m[i].Groups["wordlength"]
    m[i].Groups["articleTypeId"]
      

  5.   

    这些模板是ASPX内直接编写的,还是编写后存放在数据库里的?如果是直接写在ASPX内的,你要自己写BuildProvider,相当于ASP.NET编译器插件,让编译器能够理解你的模板。如果是放在数据库里的,就好像论坛的UBB Code那样,那么你自己读取出来正则识别然后生成内容吧,例如是正则描述不了的复杂语法,你需要自己写词法分析、语法分析,这些就是编译原理的内容了。