博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
VC中的正则表达式使用
阅读量:6824 次
发布时间:2019-06-26

本文共 1067 字,大约阅读时间需要 3 分钟。

对于很多应用,例如文件查询和名称匹配,在html文件中查找匹配的超链接等等 正则表达式自然是最好的解决方法. 不过VC里面竟然不如VBS对于Regular Expression那样有支持, 除非升级到VC.NET(使用拖管C++就可以使用).

    其实VBS也是使用了微软自己REGEX的一个COM, 称为 "Microsoft VBScript Regular Expression 5.5" 在OleViewer可以查找到相关信息. 下面是那篇文章的使用例子

None.gif#import "RegExp.tlb" no_namespace
None.gif  
dot.gif
ExpandedBlockStart.gif  
try  {
InBlock.gif    
static IRegExpPtr regExp( __uuidof(RegExp) );
InBlock.gif    regExp->Pattern = _bstr_t(lpszPattern);
InBlock.gif  
InBlock.gif    HWND hWndCtrl = pDX->PrepareEditCtrl(nIDC);
InBlock.gif    
if (pDX->m_bSaveAndValidate)
ExpandedSubBlockStart.gif    {
InBlock.gif        
int nLen = ::GetWindowTextLength(hWndCtrl);
InBlock.gif        ::GetWindowText(hWndCtrl, value.GetBufferSetLength(nLen),nLen+1);
InBlock.gif        value.ReleaseBuffer();
InBlock.gif  
InBlock.gif        
//
now we verify it
InBlock.gif
        
if ( regExp->Test( (LPCTSTR)value) )
ExpandedSubBlockStart.gif        {
InBlock.gif            IMatchCollectionPtr matches=regExp->Execute((LPCTSTR)value);
InBlock.gif            
if ( matches->Count== 1)
ExpandedSubBlockStart.gif            {
InBlock.gif                IMatchPtr match = matches->Item[0];
InBlock.gif                
if ( match->FirstIndex==0 && match->Length == value.GetLength() )
ExpandedSubBlockStart.gif                {
InBlock.gif                  
return;
ExpandedSubBlockEnd.gif                }
ExpandedSubBlockEnd.gif            }
ExpandedSubBlockEnd.gif        }
InBlock.gif        CString strMsg = CString("The input does not exactly have the pattern ") + lpszPattern;
InBlock.gif        pDX->m_pDlgWnd->MessageBox(strMsg);
InBlock.gif        pDX->PrepareEditCtrl(nIDC);
InBlock.gif        pDX->Fail();
ExpandedSubBlockEnd.gif    }
InBlock.gif    
else
ExpandedSubBlockStart.gif    {
ExpandedSubBlockEnd.gif    }
ExpandedBlockEnd.gif  }
None.gif  
catch (_com_error& e)
ExpandedBlockStart.gif   {
InBlock.gif      AfxMessageBox( e.ErrorMessage() );
ExpandedBlockEnd.gif  }

转载地址:http://hllzl.baihongyu.com/

你可能感兴趣的文章
usb_control_msg参数详解【转】
查看>>
8086汇编指令速查手册
查看>>
j2EE web.xml中的url-pattern的映射规则
查看>>
设计模式之单例模式
查看>>
获取客户端ip地址
查看>>
sessionid如何产生?由谁产生?保存在哪里?
查看>>
oracle 监听服务异常
查看>>
网络流——最大流Dinic算法
查看>>
下面的div浮动上来了
查看>>
程序员生存定律
查看>>
windows 下搭建 apache + php52 + postgreSQL7/8/9环境
查看>>
python正则表达式
查看>>
分布式系统的面试题3
查看>>
带输入输出参数的存储过程
查看>>
CSS3 3D酷炫立方体变换动画
查看>>
1B. Spreadsheets
查看>>
$(selector).each()和$.each()的区别
查看>>
Java并发编程:线程池的使用
查看>>
C++学习笔记01
查看>>
C# 反射机制
查看>>