VC6.0正则表达式.doc_第1页
VC6.0正则表达式.doc_第2页
VC6.0正则表达式.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

最近做开发碰到了长字符串匹配、搜索的问题,最先想到的是使用正则表达式,简单、高效。但是我用的开发工具是VC6.0,不支持正则表达式。上网 baidu一下,发现支持正则的库还真不少,大概有以下几种:boost,GNU,VC7带的ATL中的和微软发布的greta。网上的朋友对boost 评价不错,决定就使用是它了! 1、接下来的就是下载boost库,网上很好找。我下载的是压缩包,40多M。下载地址:(url/sourceforge/boost/boost_1_35_0.zip/url)。我解压的目录是D:boost 2、然后是编译,我只要支持正则表达式就可以,因此只需要编译D:boostlibsregexbuild目录下的文件。据说全部编译要花将近2个小时,没有验证过,在我家里的机器上编译正则表达式部分只用了不到5分钟。 以下是我的操作: 1、在“运行”里输入“cmd”,打开命令提示符; 2、输入命令“cd D:boostlibsregexbuild”/设置当前目录 3、输入命令“D:”/转到当前目录 4、接下来是很关键的一步: 很多文章是这样说的“输入 nmake -fvc6.mak”,但是出现了“nmake 不是内部或外部命令,也不是可运行的程序或批处理文件。”的错误提示。然后你就会拼命查找原因,结果又有文章上说是环境变量没配置好,然后给出一堆 “set”。也有的文章说是运行一下visual studio安装目录下的VC98BinVCVARS32.BAT文件就OK了。你按照文章作者的方法做的,结果发现问题依旧! 以上说法都是正确的,但是说得都不是很完整,出现错误提示的根本原因就是环境变量没配置好,不识别nmake命令,配置过jdk的朋友就很容易明白。如果 按照作者的要求搞一堆“set”,未免大题小作了吧,因为我们只需要用一次nmake 就可以解决问题了。 VCVARS32.BAT正是配置环境变量的批处理文件,但是配置的参数只在当前窗口有效,也就是说当你双击运行后窗口关闭,环境变量已经没有了。 于是我用了以下方法:把VCVARS32.BAT文件用鼠标拖到打开的cmd窗口(D:Program FilesMicrosoft Visual StudioVC98BinVCVARS32.BAT),然后回车。输入命令“nmake -fvc6.mak”等待几分钟,OK了!,D:boostlibsregexbuild多了一个vc6的文件夹,里面是很多lib和dll文件。 5、到此资源已经准备好了,下面要做的工作是配置VC6.0,使 它编译使时候能找到正则库。把vc6下的所有lib和dll文件拷贝到Visual Studio安装目录下的VC98boostRex(boostRex是我自己建的)然后打开vc6.0,选择 “Tools-Options-Directories-Include files”,加入一行“D:BOOST”选择“Tools-Options-Directories-Library file”,加入一行“C:PROGRAM FILESMICROSOFT VISUAL STUDIOVC98BOOSTREX”(彩色部分是我的Visual Studio安装目录) 好了,配置也OK了!下面进行测试。 6、编写程序测试/SDK下的测试:#include stdafx.h #include #include #include #include #include using namespace std; using namespace boost; regex expression(select (a-zA-Z*) from (a-zA-Z*); int main(int argc, char* argv) std:string in; cmatch what; cout enter test string endl; getline(cin,in); if(regex_match(in.c_str(), what, expression) for(int i=0;iwhat.size();i+) coutstr :whati.str()endl; else coutError Inputendl; return 0; 输入: select name from table输出: str:select name from tablestr:namestr:table/MFC下的测试(有几个地方要注意,下面有提示): /新建一个对话框的MFC工程,加入头文件 #include /在按钮鼠标单击事件响应函数中加入 boost:regex expression(select (a-zA-Z*) from (a-zA-Z*); CString in = select gm from tab; CString sRet; boost:cmatch what; if(boost:regex_match(LPCSTR(in), what, expression)/CString转string for(int

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论