/// <summary>
        /// 模版变量的正则表达式,例如:<$:title> 或带属性的变量:<$:time fieldname="PostTime">
        /// </summary>
        internal static readonly Regex TemplateVarRegex = new Regex("\\G<\\$\\:\\s*(?<varname>[\\w\\.]+)(\\s+(?<attrname>[-\\w]+)(\\s*=\\s*\"(?<attrval>[^\"]*)\"|\\s*=\\s*'(?<attrval>[^']*)'|\\s*=\\s*(?<attrval>[^\\s=/>]*)))*\\s*?>", RegexOptions.Compiled);谁能把上面的匹配规则一个个说明下,谢谢
\\G<\\$\\: 这个<$: 看的出来了, 但前面的还要\G 是什么意思的呢,后面的更加看不东到底是什么概念。那些规则符号我也看的差不多,但整体放一起感觉还是没有弄明白? 看的头晕

解决方案 »

  1.   

    //G应该是所有的意思吧。
    所有的<$:的意思
      

  2.   

    谁自己开发过模板引擎的,就HTML和CS 分离。分享下经验。谢谢。
      

  3.   

    \G 匹配的起始位置,或上一次匹配的结束位置,这个要根据实际情况看是否有必要加话说正则没那样用的,分支结构(...|...)的效率比较低,所以能合并的共性的内容要尽量合并
    Regex reg = new Regex(@"<\$:\s*(?<varname>[\w\.]+)(?:\s+(?<attrname>[-\w]+)\s*=\s*(['""]?)(?<attrval>[^'""\s>]*)\1)*\s*>");
      

  4.   

    \\s*(?<varname>[\\w\\.]+)(\\s+(?<attrname>[-\\w]+)(\\s*=\\s*\"(?<attrval>[^\"]*)\"|\\s*=\\s*'(?<attrval>[^']*)'|\\s*=\\s*(?<attrval>[^\\s=/>]*)))*\\s*?>  看不懂怎么匹配。哎。。模版变量的正则表达式,例如:<$:title> 或带属性的变量:<$:time fieldname="PostTime">