|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
既然话题已经抄起,我打算今晚发篇博文再引导一下舆论方向,使它再火两天,抛砖引玉,而且赵劼先生一直在跟帖,使.NET阵营的我感到万分难得。正则 怎样构建一种面向html标签的正则表达式语法?
在处置字符串的过程当中,正则表达式有着不成替换的地位。如今的盘算机初级言语中都有响应的正则表达式撑持包。
假如我们把一个网页中html代码看成一个有布局的字符串,那末怎样用一品种似正则表达式的体例来提取想要的html标签(tags)呢?
这里先不思索怎样完成,而先思索怎样用一品种正则表达式的体例来形貌html标签。要获得一个html标签(tag),必要晓得该标签的2类属性:
1、标签的地位;
2、标签自己的属性;
好比鄙人面的html网页中:
<html>
<body>
<divid="BodyWrapper"class="wrapper">
<divid="LeftWrapper"class="wrapper">
</div>
<divid="RightWrapper"class="wrapper">
<divclass="column">
<div>
<divclass="column">
<div>
</div>
</div>
</body>
</html>
假如想提取下面html代码中class是column的第二个div标签,那末必要我指定该div的id和class和地位信息。如今的成绩是:怎样计划一个满意上述请求的表达语法呢?
好比:
gettag:div{tag-name:div;tag-position:2;tag-class:column;tag-id:;tag-content:;}
tag-parent{tag-name:div;tag-position:2;tag-class:column;tag-id:;tag-content:;}
tag-child{......}
下面这是一种易于了解的形貌式的语法。
大概相似python的语法:
gettag:div
tag-name:
tag-id:
tag-position:2
tag-class:column
tag-content:
tag-parent:
tag-name:
tag-id:
tag-position:2
tag-class:column
tag-content:
tag-child:
tag-type:table
不晓得人人有无更合适的语法体现情势。只需能公道的计划这个表达语法,那末后继的事情就好做了。如许做的终极目标是:程序员能够用这类表达式剖析html代码,就像处置一般的字符串那样的便利。
但愿人人介入,多出主张,我会依据人人的反应,完美这个语法,并做一个基于这个语法的完成。
参考:
关于正则表达式的基础先容能够看这里:
http://www.webjx.com/htmldata/2006-03-16/1142469074.html
http://www.webjx.com/htmldata/2006-03-16/1142468929.html
正则表达式最早是由数学家StephenKleene于1956年提出,他是在对天然言语的递增研讨功效的基本上提出来的。具有完全语法的正则表达式利用在字符的格局婚配方面上,厥后被使用到熔融信息手艺范畴。自从当时起,正则表达式经由几个时代的开展,如今的尺度已被ISO(国际尺度构造)同意和被OpenGroup构造认定。
正则表达式并不是一门公用言语,但它可用于在一个文件或字符里查找和替换文本的一种尺度。它具有两种尺度:基础的正则表达式(BRE),扩大的正则表达式(ERE)。ERE包含BRE功效和别的别的的观点。
很多程序中都利用了正则表达式,包含xsh,egrep,sed,vi和在UNIX平台下的程序。它们能够被良多言语采取,如HTML和XML,这些采取一般只是全部尺度的一个子集。
一个很大的类库。应用程序之所以难以跨平台,在于直接调用了特定平台的接口,而一个巨大的类库,就能极大地减少应用程序对平台的依赖。 |
|