VC中的正则表达式使用

对于很多应用,例如文件查询和名称匹配,在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  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值