在VisualC++6.0中使用Boost正则表达式库
目录
二 Boost正则表达式库
三安装
四结束语
正文
摘要摘 要本文介绍了在Visual C++ 6.0编程环境下如何利用Boost正则表达式库来处理正则表达式
关键字 VisualC++;Boost;正则表达式
正则表达式Regular Expression是一种进行高效、准确、简洁的进行文本字符串处理模式验证、搜索替换等的方法。它用一组特定含义的字符来匹配不同的文本字符串如“1[0-9]+”表示所有以1开始的数。正则表达式已经在很多地方得到广泛的应用包括Unix操作系统 PHP C# Java等开发环境 以及很多的应用软件中都可
以看到正则表达式的影子。如在Unix下面的grep甚至dos下的类似“dir *.*”的语句中。尤其是Perl被很多人认为是最佳的正则表达式处理工具 以致于许多其他正则表达式工具都宣称兼容Perl的正则表达式。而传统的C++没有正则表达式标准库处理正则表达式非常麻烦。
二 Boost正则表达式库
Visual C++.Net之前的版本如现在仍被广泛使用的Visual C++
6.0都没有提供对正则表达式的直接支持。于是第三方C++正则表达式库就应运而生其中以GRETA和Bo o s t: :reg ex最为有名。 GRETA是微软研究院推出的一个正则表达式模板类库。而Boost是C++标准委员会库工作组发起的一套开放源代码的、可移植的、基于模版的C++库有望被纳入C++标准库。 Boost中的正则表达式可以与Perl语言中的相同功能媲美。
三安装
。可以在Boost的官方网站: :-下载。 。下载的压缩包中已包含了所有的库文件以及官方网站上的文档资料。将下载包解压安装至
C:Boost 目录或其它目录。不像Boost下的其他模版库正则表达式库是以源码形式提供的需要单独编译才能在Windows下使用所以需要先安装好Visual C++ 6.0使用它的编译工具来编译。首先需要设置必须的环境变量这可以通过运行Visual C++安装目录下的Vcva32.bat批处理文件来设置。然后在命令行模式下转到
C:boostlibsregexbui ld目录执行nmake -fvc6.mak如果出现“Variable MSVCDIR not set”之类的错误请先检查环境变量及缺省路径是否成功设置。可以不理会执行过程中出现的警告信息等待几分钟时间成功执行后就会在C:boostlibsregexbuild目录下生成一个Vc6目录这个目录里有很多lib、 pdb和dll文件。然后在命令行下执行nmake -fvc6.mak itall将lib文件、 pdb和dll文件分别复制到Vc98下的l ib目录和bin目录中。可以用nmake -fvc6.makclean语句来清除编译过程中生成的临时文件。最后在Visual C++
6.0工作界面的“工具选项目录”页面下将C:Boost添加到VisualC++ 6.0的“include files”列表中。这样所有的准备工作都做好了下面就通过运行一个简单的实例来检查Boost: :Regex正则表达式库是否安装成功。这是一个判断信用卡号格式是否正确的程序来自Boost: :Regex自带的文档并做了简化。
用Visual C++ 6.0创建一个控制台程序
#include
#includebool validate_card_format(cot std: :string& s)static cot boost: :regex e(""(d{4} [- ]) {3}d{4}return boost: :regex_match(s e)
#include
using namespace std;int main(string s[4] = { ""0000111122223333"" ""0000 1111 22223333"
""0000-1111-2222-3333"" ""000-1111-2222-3333"" }int i;for(i = 0; i < 4; ++i)cout << ""val idate_card_format("""" << s[i] << """")returned "" << validate_card_format(s[i]) << endl;return 0;
运行结果如下validate_card_format(""0000111122223333"") returned 0validate_card_format(""0000 1111 2222 3333"") returned 1validate_card_format(""0000-1111-2222-3333"") returned 1validate_card_format(""000-1111-2222-3333"") returned 0
这段程序的核心正则表达式语句是“(d{4} [- ]) {3}d{4}” 注意“[- ]”中“-”之后是一个空格与之匹配的格式是 3组4个数字加上一个“-”或空格并以4个数字结尾 即匹配形如“0000-1111-2222-3333”或“0000 1111 2222 3333”的字符串。
四结束语
Boost中还包含有conveiolexical cast、 format、 spirit、tokenizer和string algo等处理字符串及文本的库。灵活地将它们与Boost: :Regex正则表达式库结合使用将大大提高文本处理类程序的编程效率更能体会到Boost库的强大力量。
官方网站:点击访问ATCLOUD.NET官网优惠码:目前提供Cloud VPS与Storage VPS两款产品的六折优惠活动(续费同价,截止至2021年5月31日)优惠码:UMMBPBR20Z活动方案:一、型号CPU内存磁盘流量优惠价格购买链接VPS-1GB0.5×2.6+GHz1GB20GB1TB$3立即购买VPS-2GB1×2.6+GHz2GB50GB2TB$6立即购买VPS-4GB2×2.6...
RAKsmart 商家我们应该较多的熟悉的,主营独立服务器和站群服务器业务。从去年开始有陆续的新增多个机房,包含韩国、日本、中国香港等。虽然他们家也有VPS主机,但是好像不是特别的重视,价格上特价的时候也是比较便宜的1.99美元月付(年中活动有促销)。不过他们的重点还是独立服务器,毕竟在这个产业中利润率较大。正如上面的Megalayer商家的美国服务器活动,这个同学有需要独立服务器,这里我一并整理...
profitserver正在对德国vps(法兰克福)、西班牙vps(马德里)、荷兰vps(杜廷赫姆)这3处数据中心内的VPS进行5折优惠促销。所有VPS基于KVM虚拟,纯SSD阵列,自带一个IPv4,不限制流量,在后台支持自定义ISO文件,方便大家折腾!此外还有以下数据中心:俄罗斯(多机房)、捷克、保加利亚、立陶宛、新加坡、美国(洛杉矶、锡考克斯、迈阿密)、瑞士、波兰、乌克兰,VPS和前面的一样性...