`
lovnet
  • 浏览: 6671066 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

面向html标签的正则表达式

阅读更多

如何构建一种面向 html 标签的正则表达式语法?

在处理字符串的过程中,正则表达式有着不可替代的位置。现在的计算机高级语言中都有相应的正则表达式支持包。

如果我们把一个网页中 html 代码当作一个有结构的字符串,那么如何用一种类似正则表达式的方式来提取想要的html标签(tags)呢

这里先不考虑如何实现,而先考虑如何用一种类正则表达式的方式来描述html标签
要取得一个html标签(tag),需要知道该标签的2类属性:
1、标签的位置;
2、标签本身的属性;
比如 在下面的html网页中:
<html>
<body>
<div id="BodyWrapper" class="wrapper">
<div id="LeftWrapper" class="wrapper">
</div>
<div id="RightWrapper" class="wrapper">
<div class="column">
<div>
<div class="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://blog.joycode.com/sumtec/archive/2004/06/29/26057.aspx
http://www.21tx.com/dev/2004/12/25/13132.html

正则表达式最早是由数学家Stephen Kleene于1956年提出,他是在对自然语言的递增研究成果的基础上提出来的。具有完整语法的正则表达式使用在字符的格式匹配方面上,后来被应用到熔融信息技术领域。自从那时起,正则表达式经过几个时期的发展,现在的标准已经被ISO(国际标准组织)批准和被Open Group组织认定。

正则表达式并非一门专用语言,但它可用于在一个文件或字符里查找和替代文本的一种标准。它具有两种标准:基本的正则表达式(BRE),扩展的正则表达式(ERE)。ERE包括BRE功能和另外其它的概念。

许多程序中都使用了正则表达式,包括xsh,egrep,sed,vi以及在UNIX平台下的程序。它们可以被很多语言采纳,如HTML 和XML,这些采纳通常只是整个标准的一个子集。
分享到:
评论

相关推荐

    python正则表达式面试题解答

    三道python正则表达式面试题,具体如下 1.去除以下html文件中的标签,只显示文本信息。 岗位职责: 完成推荐算法、数据统计、接口、后台等服务器端相关工作 &lt;p&gt;&lt;br&gt; 必备要求: 良好的自我驱动力和职业素养,工作...

    企业java工程师测试题

    而innerText只适用于IE浏览器,因此,尽可能地去使用innerHTML,而少用innerText,如果要输出不含HTML标签的内容,可以使用innerHTML取得包含HTML标签的内容后,再用正则表达式去除HTML标签 4. int 和 Integer 有...

    Web系统与技术 课程教材

    4.3.2 String 对象的正则表达式方法... 106 4.4 常见的正则表达式... 107 4.5 习题... 108 第5章 JavaScript编程技术... 109 5.1 JavaScript编程基础... 109 5.1.1 JavaScript简介... 109 5.1.2 Javascript的...

    javascriptbyexample:Javascript范例

    递归函数事件处理鼠标事件关键事件更改标签值变更班级更改输入元素鼠标X / Y坐标通过标签名称获取元素元素样式操纵URL 编辑子节点设定属性添加元素面向对象JavaScript 表格验证异常处理正则表达式 介绍一世。 index....

    最新Python3.5零基础+高级+完整项目(28周全)培训视频学习资料

    正则表达式Re模块使用详解 第6周 本节小鸡汤(电影分享) 面向对象介绍 面向对象特性介绍 实例演示opp编程好处 实例变量与类变量 类变量的作用及析构函数 类的继承 经典类与新式类的继承顺序 继承实例讲解 多态...

    廖雪峰Pyhton教程3.x版[完整版]

    13 正则表达式 243 13.1 常用内建模块 249 13.1.1 datetime 249 13.1.2 collections 254 13.1.3 base64 258 13.1.4 struct 260 13.1.5 hashlib 262 13.1.6 itertools 267 13.1.7 XML 270 13.1.8 HTMLParser 272 13.1...

    (全)传智播客PHP就业班视频完整课程

    10-10 3 正则表达式 子表达式 引用 反向捕获 10-10 4 正则表达式 元字符 语法 10-10 5 元字符 实例应用 10-10 6 供求信息网讲解1 10-10 7 供求信息网讲解2 10-11 1 供求信息网3 10-11 2 供求信息网4 10-11 3 供求...

    Web2.0社区平台源码

    26.修改新浪视频分享的正则表达式,需要手动修改配置文件,补丁包中有说明 SpaceBuilder/Share.Web/SiteHtmlParsers/SinaHtmlParser.cs 27.修改了点击站点分享页面点击分享视频地址链接连接到站内分享视频的详细...

    C#实训教程

    7 字符串与正则表达式 132 7.1 System.String类 132 7.2 StringBuilder成员 135 7.3 字符串的格式化 138 7.4 正则表达式概述 142 7.5 内容总结 149 7.6 独立实践 150 8 集合 151 8.1 集合 151 8.2 索引器 152 8.3 ...

    韩顺平PHP JS JQUERY 所有视频下载种子 货真价实

    10-10 3 正则表达式 子表达式 引用 反向捕获 10-10 4 正则表达式 元字符 语法 10-10 5 元字符 实例应用 10-10 6 供求信息网讲解1 10-10 7 供求信息网讲解2 10-11 1 供求信息网3 10-11 2 供求信息网4 10-11 3 供求...

    史上最全韩顺平传智播客PHP就业班视频,10月份全集

    10-10 3 正则表达式 子表达式 引用 反向捕获 10-10 4 正则表达式 元字符 语法 10-10 5 元字符 实例应用 10-10 6 供求信息网讲解1 10-10 7 供求信息网讲解2 10-11 1 供求信息网3 10-11 2 供求信息网4 10-11 3 供求...

    史上最全传智播客PHP就业班视频课,8月份视频

    10-10 3 正则表达式 子表达式 引用 反向捕获 10-10 4 正则表达式 元字符 语法 10-10 5 元字符 实例应用 10-10 6 供求信息网讲解1 10-10 7 供求信息网讲解2 10-11 1 供求信息网3 10-11 2 供求信息网4 10-11 3 供求...

    史上最全韩顺平传智播客PHP就业班视频,9月份全集

    10-10 3 正则表达式 子表达式 引用 反向捕获 10-10 4 正则表达式 元字符 语法 10-10 5 元字符 实例应用 10-10 6 供求信息网讲解1 10-10 7 供求信息网讲解2 10-11 1 供求信息网3 10-11 2 供求信息网4 10-11 3 供求...

    Java开发技术大全 电子版

    13.7.4正则表达式中的其他通用规则424 13.7.5使用技巧425 13.8Pattern类的使用426 13.9Matcher类的使用428 13.9.1匹配方法的使用429 13.9.2替换方法的使用430 13.9.3组匹配的使用431 13.9.4检验E-mail的合法...

    PHP3程序设计

    9.1 正则表达式定义 129 9.1.1 方括号表达式 130 9.1.2 转义字符 130 9.2 POSIX风格的函数 131 9.2.1 ereg 和eregi 131 9.2.2 ereg_replace 和eregi_replace 132 9.2.3 Split 133 9.3 PERL风格函数 134 9.3.1 模式定...

    易点内容管理系统 DianCMS v5.1.0 SQL版

    27、录入信息使用正则表达式验证 28、站点短消息系统 29、上传文件管理 30、任意广告制作系统 31、URL伪静态功能:采用微软URLRewriter核心架构 32、评论系统 33、后台5种风格主题供选择 34、VS Free标签——任意表...

    易点内容管理系统 DianCMS v5.1.0 ACC版

    27、录入信息使用正则表达式验证 28、站点短消息系统 29、上传文件管理 30、任意广告制作系统 31、URL伪静态功能:采用微软URLRewriter核心架构 32、评论系统 33、后台5种风格主题供选择 34、VS Free标签——任意表...

    Java语言基础下载

    正则表示式(Regular expression) 133 StringBuffer类 135 StringBuffer与String的区别 136 集合类的使用 136 实例分析 136 内容总结 153 独立实践 154 第十章:JAVA GUI概述 155 学习目标 155 GUI概述及组成 156 ...

    Java2实用教程.rar

    5 8正则表达式 习题 第6章时间 日期和数字 6 1Date类 6 2Calendar类 6 3Math类 6 4BigInteger类 习题 第7章AWT组件及事件处理 7 1Java窗口 7 1 1 Frame常用方法 7 1 2菜单条 菜单 菜单项 7 1 3窗口与屏幕 7 2文本框 ...

Global site tag (gtag.js) - Google Analytics