C# 正则表达式提取特定内容中的特定模式

.Net技术 码拜 6年前 (2015-10-09) 922次浏览
对于一些网页源代码,想提取一对(或多对)字符串间的特定模式,应该怎么写表达式?比如许多新闻网页分为许多栏目,只想提取其中一栏或某几栏(不是全部)的新闻标题存入分组应该怎么写?
解决方案: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分
http://deerchao.net/tutorials/regex/regex.htm

好好研究吧

html一般需要用到平衡组,如果html规则的话,一般建议还是用解析器

解决方案:30分

貌似 当初我看 正则平衡的时候 说 目前只有 .Net 支持 所以 就没去看了 我个人而言比较喜欢通用 希望我写的表达式换到其他语言也能正常运行

而且 正则平衡也不能百分百保证 标签匹配成功 比如下面的标签

<div attr="你不会知道字符串里面会出现什么东西比如这个:</div>">
<!--在或者 还有注释干扰</div>-->
<script>
//或者这样
...
var html = ""<div>"" + xxx + ""</div>之内的""
...
</scipt>
</div>

所以说 每次我都是更具页面特征去匹配数据 如果非要遇到 要精准性的 用正则还是没辙 还是得解析


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C# 正则表达式提取特定内容中的特定模式
喜欢 (0)
[1034331897@qq.com]
分享 (0)