您的当前位置:首页正文

URL链接提取器

2022-12-05 来源:爱go旅游网
龙源期刊网 http://www.qikan.com.cn

URL链接提取器

作者:崔伟民

来源:《电脑爱好者》2008年第09期

2008年第6期,挑战题目4是“URL链接提取器”:现在有放在不同文件夹下的一堆文件(多种类型),现在我要提取这些文件夹下TXT文件中的字符,制作两个文本: 文件一,所有包含有URL链接的整段文字。 文件二,所有URL链接的字符。

要提取一些像URL链接这样的有一定规律性的文字时,使用正则表达式是最合适的。可是我们如何使用一个正则表达式来表示所有的URL地址呢?在EmEditor中依次选择“工具→所有配置属性”菜单项,在“链接”标签下,我们可以看到EmEditor识别URL链接的两个规则: ①如果文字是以http://、https://、ftp://、file:和mailto:开始,并且紧随其后的文字是“识别这些字符”中的定义的字符时,它们将会被看做是一个链接。

②如果链接最后的一个文字是在“不允许在行末的字符”中所定义的字符时,则不应将它当做是链接的一部分。

有了这2个识别URL链接的规则,我们就能使用以下两种方法,提取TXT文件中的URL链接了。

方法一:使用EmEditor+宏

这个方法主要是使用文本编辑工具EmEditor来实现的。 1.生成文件一

在EmEditor中选择“搜索→在文件中查找”菜单,在随后弹出的对话框里,在“查找”文本框处输入“((https?:\\/\\/)|(ftp:\\/\\/)|(file:)|(mailto:))[!#%&,-:;=@_~\\d\\w\\$\\'\\(\\)\\*\\+\\.\\/\\?\\^\\\\]+”(不含外侧的双引号,下同)。在“文件类型”处输入“*.txt”。在“在文件夹”处输入要搜索的文件夹的路径。同时要选中“查找子文件夹”和“使用正则表达式”这两个选项。最后点击“查找”按钮(见图1)。

龙源期刊网 http://www.qikan.com.cn

图1

搜索完毕后,所有包含有URL链接的整段文字就显示在结果中了,我们可以将其保存为文件一。

2.生成文件二

打开EmEditor,输入以下的代码,并将其扩展名改为VBEE,如“GetURL.vbee”。 strURLS = \"\"

Set regEx = New RegExp

regEx.Pattern = \"((https?:\\/\\/)|(ftp:\\/\\/)|(file:)|(mailto:))[!#%&,-:;=@_~\\d\\w\\$\\'\\(\\)\\*\\+\\.\\/\\?\\^\\\\]+\" regEx.IgnoreCase = True regEx.Global = True

document.selection.SelectAll '选中整个文档。

龙源期刊网 http://www.qikan.com.cn

Set colURLS = regEx.Execute(document.selection.Text) '查找文档中所有的URL。 For Each objURL In colURLS

strURLS = strURLS & TailTrim(objURL.Value) & vbcrlf Next

document.selection.Text = strURLS '将所有的URL写入当前文档。

Function TailTrim(strURL) regEx.Pattern = \"([!:;,\\'\\(\\)\\.\\?]*)$\" Set colMatches = regEx.Execute(strURL) TailTrim = Left(strURL, colMatches(0).FirstIndex) End Function

在EmEditor中选择“宏→选择”菜单,然后选择上面所创建的GetURL.vbee文件。 最后,打开刚刚生成的“文件一”,点击“宏→运行 GetURL.vbee”菜单项。这样,搜索结果就会仅包含URL链接,我们只需要将结果另存为“文件二”即可。

方法二:使用VBS脚本

如果大家嫌方法一不够方便也没关系,我还编写了一个VBS脚本,可以搜索TXT文件中的URL链接,并将它们提取到指定的文件中。使用方法很简单:运行SearchURL.vbs文件,然后选择要搜索的文件夹就可以了(见图2)。搜索完毕后,结果会被保存到脚本文件所在目录下的“File1.txt”和“File2.txt”中。

龙源期刊网 http://www.qikan.com.cn

图2

本文所说的宏文件GetURL.vbee及脚本文件SearchURL.vbs均可直接下载:http://work.newhua.com/cfan/200809/Code.rar,快车代码:CF0809WJTZ01。

因篇幅问题不能全部显示,请点此查看更多更全内容