首页 新闻 赞助 找找看

asp.net 源码中匹配aspx文件的正则表达式(源中没有换行)能否给详细解释?

0
悬赏园豆:80 [待解决问题]

为方便观察已经适当换行:

\G<
     (?<tagname>[\w:\.]+)
     (\s+
        (?<attrname>\w[-\w:]*)
              (
               \s*=\s* "(?<attrval>[^"]*)"
               |
               \s*=\s*'
               (?<attrval>[^']*)'
               |
               \s*=\s*
               (?<attrval><%#.*?%>)
               |
               \s*=\s*
               (?<attrval>[^\s="'/>]*)
               |
               (?<attrval>\s*?)
              )
     )
     *\s*
     (?<empty>/)?
   >
symphony2010的主页 symphony2010 | 初学一级 | 园豆:99
提问于:2012-08-27 19:12
< >
分享
所有回答(3)
0

\w 字母、数字、下划线

\s 空白字符

(?<名称>表达式) 匹配表达式的结果,并给它命名

-----------------------------------------------------------

\G< \G不清楚(谁知道回下),以<开头
     (?<tagname>[\w:\.]+) 取标签名:由\w、:和.组成,命名为tagname
     (\s+ 多个空白

        (?<attrname>\w[-\w:]*) 取属性名:必须以\w开头,后面可能跟着-、:和\w,命名为attrname
              (
               \s*=\s*"(?<attrval>[^"]*)" 匹配:="属性值",取属性值:不包含"的任意字符,命名为attrval
               | 
               \s*=\s*'(?<attrval>[^']*)' 匹配:= '属性值',取属性值:不包含'的任意字符,命名为attrval
               | 
               \s*=\s*(?<attrval><%#.*?%>) 匹配:= <%#非换行的任意字符%>,取属性值命名为attrval
               | 
               \s*=\s*(?<attrval>[^\s="'/>]*) 匹配:= 不包含空白字符、=、"、'、/和>的任意字符,取属性值命名为attrval
               | 
               (?<attrval>\s*?) 同上,只匹配空白
              )
     )
     *\s* 匹配0个或多个上面的name=value和0个多个空白
     (?<empty>/)? 匹配:/,并命名为empty,有无/都行
   > 以>结束
向往-SONG | 园豆:4853 (老鸟四级) | 2012-08-27 22:57

\G 表示匹配上一个匹配结束的地方,用于多次匹配

支持(0) 反对(0) wny | 园豆:592 (小虾三级) | 2012-08-28 16:12
0

X,你这是什么东东,问题写清楚来。我是正则高手。

RDIFramework.NET | 园豆:316 (菜鸟二级) | 2012-08-28 17:08
0

用 RegexBuddy 找到了更好的解:

symphony2010 | 园豆:99 (初学一级) | 2012-08-28 17:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册