VC中的正则表达式使用

对于很多应用,例如文件查询和名称匹配,在html文件中查找匹配的超链接等等 正则表达式自然是最好的解决方法. 不过VC里面竟然不如VBS对于Regular Expression那样有支持, 除非升级到VC.NET(使用拖管C++就可以使用).
    其实VBS也是使用了微软自己REGEX的一个COM, 称为 "Microsoft VBScript Regular Expression 5.5" 在OleViewer可以查找到相关信息. 下面是那篇文章的使用例子
VC中的正则表达式使用#import "RegExp.tlb" no_namespace
VC中的正则表达式使用  VC中的正则表达式使用
VC中的正则表达式使用  try {
VC中的正则表达式使用    static IRegExpPtr regExp( __uuidof(RegExp) );
VC中的正则表达式使用    regExp->Pattern = _bstr_t(lpszPattern);
VC中的正则表达式使用  
VC中的正则表达式使用    HWND hWndCtrl = pDX->PrepareEditCtrl(nIDC);
VC中的正则表达式使用    if (pDX->m_bSaveAndValidate)
VC中的正则表达式使用    {
VC中的正则表达式使用        int nLen = ::GetWindowTextLength(hWndCtrl);
VC中的正则表达式使用        ::GetWindowText(hWndCtrl, value.GetBufferSetLength(nLen),nLen+1);
VC中的正则表达式使用        value.ReleaseBuffer();
VC中的正则表达式使用  
VC中的正则表达式使用        //now we verify it
VC中的正则表达式使用
        if ( regExp->Test( (LPCTSTR)value) )
VC中的正则表达式使用        {
VC中的正则表达式使用            IMatchCollectionPtr matches=regExp->Execute((LPCTSTR)value);
VC中的正则表达式使用            if ( matches->Count== 1)
VC中的正则表达式使用            {
VC中的正则表达式使用                IMatchPtr match = matches->Item[0];
VC中的正则表达式使用                if ( match->FirstIndex==0 && match->Length == value.GetLength() )
VC中的正则表达式使用                {
VC中的正则表达式使用                  return;
VC中的正则表达式使用                }

VC中的正则表达式使用            }

VC中的正则表达式使用        }

VC中的正则表达式使用        CString strMsg = CString("The input does not exactly have the pattern ") + lpszPattern;
VC中的正则表达式使用        pDX->m_pDlgWnd->MessageBox(strMsg);
VC中的正则表达式使用        pDX->PrepareEditCtrl(nIDC);
VC中的正则表达式使用        pDX->Fail();
VC中的正则表达式使用    }

VC中的正则表达式使用    else
VC中的正则表达式使用    {
VC中的正则表达式使用    }

VC中的正则表达式使用  }

VC中的正则表达式使用  catch (_com_error& e)
VC中的正则表达式使用  {
VC中的正则表达式使用      AfxMessageBox( e.ErrorMessage() );
VC中的正则表达式使用  }
上一篇:leetCode 345. Reverse Vowels of a String 字符串


下一篇:iOS设计模式之策略模式