正则表达式在垂直搜索引擎中的应用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

作者简介:张斌(1977-),硕士,讲师,研究方向:电子商务专业方向。

收稿日期:2010-05-06

正则表达式在垂直搜索引擎中的应用

张斌

(浙江越秀外国语学院,绍兴312000)

摘要:采用聚焦爬虫可以提高搜索引擎的检索效率,聚焦爬虫经常使用正则表达式来进行有效的信息检索,着重分析了网页检索中常用的正则表达式,为搜索引擎的构建提供帮助。关键词:正则表达式;聚焦爬虫;信息检索中图分类号:TP3

文献标识码:B

文章编码:1672-6251(2010)08-0162-02

Application of Regular Expressions in Vertical Search Engine

ZHANG Bin

(Zhejiang Yuexiu Foreign Language College,Shaoxing 312000)

Abstract:Because focused crawler system can promote the efficiency of search engine and regular expression could used to get quick and efficient search.In this paper,regular expression used in web page index was analyzed for providing useful help for researcher in vertical search engine.

Key words:regular expressions;focuses crawler;information retrieval

页面内容提取、分词、自然语言处理是聚焦爬虫的主要工作。在内容提取中采用正则表达可以明显提高效能,已在许多搜索程序中广泛应用。以下列举几个常用的正则表达,并分析其在聚焦爬虫中的应用方法,以供同行参考。

1正则表达式与文档内容提取

正则表达式是一种编程语言中使用的特殊代码模

式,可用其验证、查找、替换与划分文本内容。聚焦爬虫往往通过对主题网页的学习提取主题特征的正则表达式,以指导爬虫过滤与主题不相符的网页文本[4]。正则表达式基本技巧如下:

(1)匹配多个字符之一。如匹配拼写错误的fac -

tory ,可用:f [ae]ct [ou]ry ;

(2)匹配文本行开始与结束。如以c 开始,a 结束,可用:^a.*b$;

(3)匹配单词。如找dog ,可用:\bdog\b ;

(4)Unicode 字母。如匹配中文,可用:[\u3400-

\u4DB5\u4E00-\u9fa5];

(5)分组和捕获。如匹配年月日相同的日期,可用:\b\d\d (\d\d)-\1-\1\b ,其中1表示捕获分组1,即

(\d\d)中的内容,捕获分组可以表示临时存取的区域,

用于引用和替换;

(6)重复匹配。完整HTML 文件可用:

.*?.*?.*?.*.*?]*>.*>.*?.

其中:*表示一个或多个,?表示0个或一个,^表示否定。

Html 文件也可使用NekoHTML 做标签补偿,用HtmlParser 等解析程序将网页转换成一个个串联的Node ,用正则式过滤脚本、注释等标签,提取表格等结构化信息,实现网页去噪。其中包括为网页建立网站风格树和计算节点重要性来确定噪声元素。

2正则表达式编程

使用C#、Java 等编程语言的步骤如下:①要先要

导入函数库,其中C#用using System.Text.RegularEx -

pressions ;Java 用import java.util.regex.*;②创建正则表达式对象,C#用Regex regexObj =new Regex ("

regex pattern");Java 用Pattern regex=pile ("regex pattern");Matcher regexMatcher =regex.matcher (subjectString);③在网页信息提取中,拆分字符串、逐行查找为常用功能,C#代码如下:string []spli -

tArray=Regex.Split (subjectString,"<[^<>]*>>"),其中

splitArray为拆分后的数组,string[]lines=Regex.Split (subjectString,”\r?\n”);④对lines数组做逐行匹配:for(int i=0;i

3正则表达式应用

在网络爬虫的内容提取与检验过程中,需要应用大量的正则表达式,具体可以分为如下几个部分:(1)合法性验证和格式化。E-mail地址验证要考虑不允许前导、拖尾或连续的点号,最后顶级域名包含2~6个字母,其正则式为:^[\w!#$%&’*+/=?’{|}~^-]+(?:\.[!#$%&’*+/=?{1}~^-]+)*@(?: [A-Z0-9-]+\.)+[A-Z]{2,6}$。

国际电话以加号开头,然后是国家代码和国内号码,其正则式如下:^\+(?:[0-9]?){6,14}[0-9]$日期合法性检验要考虑允许使用前导0,允许日月使用一个或两个数字,正则式为:^1[0-2]|0?[1-9]/(3[01]|[12][0-9]|0?[1-9])/(?:[0-9]{2})? [0-9]{2}$。

传统时间24小时制的合法性检验正则式则为:^ [2[0-3]|[01]?[0-9]

匹配10~100个单词的正则式是:^\W*(?:\w+ \b\W*){10,100}$。

ISBN-13号验证:^(?:ISBN(?:-13)?:?)?(?=[-0-9]{17}$|[0-9]{13}$)97[89][-]?[0-9] {1,5}

[-]?(?:[0-9]+[-]?){2}[0-9]$。

(2)单词查找与替换。相似词查找是爬虫常用功能,如查找Bat、cat或rat可用:\b[bcr]at\b,查找某单词之外的任意单词,如:\b(?dog\b)\w+可查找除dog 之外的单词,查找4个可任意排列的目标单词,单词间最多有5个其他单词,可用以下参数来实现:\b(?:(?:word1()|word2()|word3()|word4()| (?>\1\2\3\4)w+)\b\W*?){4,9}\1\2\3\4

网页中冗余信息较多,正则表达式可以删除重复文本行:^([^\r\n]*)(?:\r?\n|\r)(?=.*^1$),即保留每组重复行的最后一行,将前面的行替换为空串。

匹配不包含单词John的整行内容:^(?:(?! \bJohn\b).)*$。

清楚任意空白字符:\s+。

(3)数字匹配。用正则表达式可以匹配特定范围的十六进制数,如0~FF:^[1-9a-f]?[0-9a-f]$;

匹配包含符合、整数、小数、指数部分的浮点数: ^[-+][0-9]+\.[0-9]+[eE][-+]?[0-9]+$;

匹配含千位分隔符的数,整数和小数可选:^([0-9] {1,3}(,[0,9]{3})*(\.[0-9]+)?|\..[0-9]+)$。

(4)URL验证与提取。由于网络爬虫的核心之一是获取URL并下载相关信息,因此利用正则式验证与提取URL也很重要,可用:^(https?|ftp)://[a-z0-9-]+ (\.[a-z0-9-]+)+([/?].+)?$验证URL合法性。用正则式全文查找加引号的URL如下:

\b(?:(?:https?|ftp|file)://|(www|ftp)\.)[-A-Z0-9+&@#//%?=~_|$!:,.;]*[-A-Z0-9+&@#/%=~_|$]|”(?:(?:https?|ftp|file)://|(www|ftp)\.)[^"\r\n]+"|'(?: (?:https|ftp|file)://|(www|ftp)\.)[^'\r\n]+'。

然后使用正则式替代文本:$&

对于URL,用正则表达式从中提取通信协议,抽取用户名、主机名、端口号、路径、查询串、作域名合法性检验,抽取IP地址的正则式也十分常用,具体如下:

^[a-z][a-z0-9+\-.]*://([a-z0-9\-._~%!$&'() *+,;=]+@)?([a-z0-9\~._~%]+|\[[a-z][0-9]\-. _~%!$&'()*+,;=:]+\]):([0-9]+)\?([^#]+)。

其中,@前捕捉项为用户名,最后第4项为端口号,第2、3项分别为主机名和路径,第5项为查询串。

IPv4的精确正则匹配式为:\b(?:(?:25[0-5]|2 [0-4][0-9]|[01]?[0-9][0-9]?)\.){3}

(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9] [0-9]?)\b。

4结束语

在垂直搜索中应用正则表达式可以实现较快的文本内容匹配、替换等操作,能够帮助网络爬虫准确地定位要下载的网页,并构造与主题相关的下载匹配模板,为网页去噪、计算相关性等操作提供帮助。本研究阐述了与搜索引擎相关的正则表达式应用方法,以供建设垂直搜索引擎参考。

参考文献

[1]Jan Goyvaerts.正则表达式经典实例[M].北京:人民邮电出版社,

2010.

[2]叶勇勤.基于URL规则的聚焦爬虫及其应用[D].杭州:浙江大

学,2007.

[3]邵增荣.正则表达式在油价事件网页提取中的应用技术[J].现

代图书情报技术,2009,(2):84-85.

[4]罗刚.自己动手写搜索引擎[M].北京:电子工业出版社,2009.

相关文档
最新文档