对于一些网页源代码,想提取一对(或多对)字符串间的特定模式,应该怎么写表达式?比如许多新闻网页分为许多栏目,只想提取其中一栏或某几栏(不是全部)的新闻标题存入分组应该怎么写?
解决方案:40分
一个 html 跟 xml 基本上一致,也就是说是一种规范的数据结构。例如
<x a=”123″ b=”456>kasdkf</x>
<y>2342394</y>
<x c=”2394″ a=”sksdf” d= 23 b=238>阿斯蒂芬</x>
这里就有一个y类型的 element(没有属性),两个x类型的 element(有着a、c、b、d共4个属性)。
因此分析一个文本,首先要使用它的目标语言的一种“解析器”去把它变为结构化数据结构,然后你根据这种数据结构再去抽取你要的 element 和 属性。
所谓“正则表达式”,只是用来匹配单词儿的,不是语法分析,更不是语义和功能分析。因此如果你不去理解你的目标业务数据结构的内涵,那么可能只能求人给你匹配单词儿,而自己却不会进行数据分析。
任何数据解析,最起码都是基于语法分析器得到的结构化数据来进行分析的。而不是什么正则表达式。
解决方案:30分
解决方案:30分
貌似 当初我看 正则平衡的时候 说 目前只有 .Net 支持 所以 就没去看了 我个人而言比较喜欢通用 希望我写的表达式换到其他语言也能正常运行
而且 正则平衡也不能百分百保证 标签匹配成功 比如下面的标签
<div attr="你不会知道字符串里面会出现什么东西比如这个:</div>"> <!--在或者 还有注释干扰</div>--> <script> //或者这样 ... var html = ""<div>"" + xxx + ""</div>之内的"" ... </scipt> </div>
所以说 每次我都是更具页面特征去匹配数据 如果非要遇到 要精准性的 用正则还是没辙 还是得解析