- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
网络爬虫系列讲座 C#正则表达式应用 前言 互联网高速发展的今天,信息越来越多样化,我们更加依赖于网络给我们带来的便利,从 Web 页面上检索数据获取信息是网民最基本的需求。 我们面向于互联网所带来的海量数据的同时,发现人工检索收录有用的数据时已经力不从心,甚至根本不可行,这时候我发现需要一种方法解决此问题 – 搜索引擎由此诞生! 搜索引擎是利用机器实现对海量数据的检索、排序以及一系列算法筛选出我们所需的信息。为了获取数据不可或缺的就是“网络爬虫”,而处理网络爬虫所获取的数据,最简单的方法就是使用正则表达式。 本章目标 正则表达式的起源 理解并编写简单的正则表达式 正则表达式在 C# 中的实现 了解 C# 中正则对像、集合等。 理解并编写常见的正则表达式 利用现有的知识编写网络爬虫,获取黄页信息 问题 我们在 Windows上搜索 EXE 扩展名的文件可以在搜索对话框中输入“*.EXE”,然后搜索。若要搜索字母 A 开头的 EXE 文件,我们可以输如“A*.EXE”。 问题: 我们可以实现以字符“A”开始并且只能出现一次并且扩展名是“EXE”这样的文件搜索吗? 我们可以指定只允许出现指定的字符(如:只允许出现字母:A、B、C 和数字:5、8、9)或指定出现字符的重复次数的搜索吗? 解决 怎么办? 这就是我们使用正则要解决的问题! 什么是正则表达式? 正则表达式是如何解决这类问题的? 正则表达式简介 在典型的搜索和替换操作中,必须提供要查找的确切文字。这种技术对于静态文本中的简单搜索和替换任务可能足够了,但是由于它缺乏灵活性,因此在搜索动态文本时就有困难了,甚至是不可能的。 使用正则表达式,就可以: 测试字符串的某个模式。例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式。这称为数据有效性验证。 替换文本。可以在文档中使用一个正则表达式来标识特定文字,然后可以全部将其删除,或者替换为别的文字。 根据模式匹配从字符串中提取一个子字符串。可以用来在文本或输入字段中查找特定文字。 正则表达式简介 正则表达式的“祖先”可以一直上溯至对人类神经系统如何工作的早期研究。Warren McCulloch 和 Walter Pitts 这两位神经生理学家研究出一种数学方式来描述这些神经网络。 1956 年, 一位叫 Stephen Kleene 的美国数学家在 McCulloch 和 Pitts 早期工作的基础上,发表了一篇标题为“神经网事件的表示法”的论文,引入了正则表达式的概念。正则表达式就是用来描述他称为“正则集的代数”的表达式,因此采用“正则表达式”这个术语。 随后,发现可以将这一工作应用于使用Ken Thompson 的计算搜索算法的一些早期研究,Ken Thompson是Unix 的主要发明人。正则表达式的第一个实用应用程序就是 Unix 中的qed 编辑器。 如他们所说,剩下的就是众所周知的历史了。从那时起直至现在正则表达式都是基于文本的编辑器和搜索工具中的一个重要部分。 正则表达式简介 正则表达式中的普通字符 最简单的正则表达式是一个单独的普通字符,可以匹配所搜索字符串中的该字符本身。例如,单字符模式 ‘A’ 可以匹配所搜索字符串中任何位置出现的字母 ‘A’。这里有一些单字符正则表达式模式的示例: a 7 M“ 可以将多个单字符组合在一起得到一个较大的表达式。就是通过组合单字符表达式 a、7以及 M 所创建出来的一个表达式: a7M 正则表达式中的非打印字符 有不少很有用的非打印字符,偶尔必须使用。下表显示了用来表示这些非打印字符的转义序列: \cx 匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。 x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 c 字符 \f 匹配一个换页符。等价于 \x0c 和 \cL \n 匹配一个换行符。等价于 \x0a 和 \cJ \r 匹配一个回车符。等价于 \x0d 和 \cM \s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v] \S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v] \t 匹配一个制表符。等价于 \x09 和 \cI \v 匹配一个垂直制表符。等价于 \x0b 和 \cK 正则表达式中的特殊字符 $ 匹配输入字符串的结尾位置。如果设置了正则对象的 Multiline 属性,则 $ 也匹配 \n 或 \r。要匹配 $ 字符本身,请使用 \$ ( ) 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 \( 和 \) * 匹配前面的子表达式零
文档评论(0)