打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
VC中的正则表达式使用

VC中的正则表达式使用

rick1126

C、C++ (2003-04-22 16:59:56)


打算利用这几天看得 服务, 线程TLS API, 同步和STL写一个应用程序, 作为服务在后台执行, 检测指定路径的文件变化, 把修改过的匹配查询表达式的文件进行备份, 这样就有一个文件查询和名称匹配, 正则表达式自然是最好的解决方法. 不过VC里面竟然不如VBS对于Regular Expression那样有支持, 除非升级到VC.NET, 我到CodeProject上面查询找到了相关解决方案:

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

#import "RegExp.tlb" no_namespace
...
try {
  static IRegExpPtr regExp( __uuidof(RegExp) );
  regExp->Pattern = _bstr_t(lpszPattern);

  HWND hWndCtrl = pDX->PrepareEditCtrl(nIDC);
  if (pDX->m_bSaveAndValidate)
  {
      int nLen = ::GetWindowTextLength(hWndCtrl);
      ::GetWindowText(hWndCtrl, value.GetBufferSetLength(nLen),nLen+1);
      value.ReleaseBuffer();

      //now we verify it
      if ( regExp->Test( (LPCTSTR)value) )
      {
          IMatchCollectionPtr matches=regExp->Execute((LPCTSTR)value);
          if ( matches->Count== 1)
          {
              IMatchPtr match = matches->Item[0];
              if ( match->FirstIndex==0 && match->Length == value.GetLength() )
              {
                return;
              }
          }
      }
      CString strMsg = CString("The input does not exactly have the pattern ") + lpszPattern;
      pDX->m_pDlgWnd->MessageBox(strMsg);
      pDX->PrepareEditCtrl(nIDC);
      pDX->Fail();
  }
  else
  {
  }
}
catch (_com_error& e)
{
    AfxMessageBox( e.ErrorMessage() );
}
这样操作就简单多了, 不过对于COM这东西, 我倒是情愿到http://www.boost.org下载一个类库, 不过不知道能不能使用在VC上面


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
固定电话+手机号码正则表达式
vb中使用正则表达式
vba正则表达式入门
JavaScript RegExp.$1
PostgreSQL - 正则函数regexp_like
【20181130】- 在ExcelVBA中使用正则表达式
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服