WEB开发网
开发学院软件开发VC ATL正则表达式库使用 阅读

ATL正则表达式库使用

 2006-07-21 11:45:51 来源:WEB开发网   
核心提示: 2、 CAtlREMatchContext类声明:template <class CharTraits=CAtlRECharTraits>class CAtlREMatchContext使用:CAtlREMatchContext通过m_uNumGroups成员以及GetMatc

2、 CAtlREMatchContext类

声明:

template <class CharTraits=CAtlRECharTraits>
class CAtlREMatchContext

使用:

CAtlREMatchContext通过m_uNumGroups成员以及GetMatch()方法向调用者提供匹配的结果信息。m_uNumGroups代表匹配上的Group有多少组,GetMatch()则根据传递给它的Group

的Index值,返回匹配上的字符串的pStart和pEnd指针,调用者有了这两个指针,自然可以很方便的得到匹配结果。

3、 一个小示例

下面这个例子来源于MSDN,演示了CATLRegExp和CAtlREMatchContext类的典型使用方法:

#include "stdafx.h"
#include <atlrx.h>
int main(int argc, char* argv[])
{
  CAtlRegExp<> reUrl;
  // five match groups: scheme, authority, path, query, fragment
  REParseError status = reUrl.Parse(
    "({[^:/?#]+}:)?(//{[^/?#]*})?{[^?#]*}(?{[^#]*})?(#{.*})?" );
  if (REPARSE_ERROR_OK != status)
  {
   // Unexpected error.
   return 0;
  }
  CAtlREMatchContext<> mcUrl;
  if (!reUrl.Match( "http://search.microsoft.com/us/Search.asp?qu=atl&boolean=ALL#results",
   &mcUrl))
  {
   // Unexpected error.
   return 0;
  }
  for (UINT nGroupIndex = 0; nGroupIndex < mcUrl.m_uNumGroups;
    ++nGroupIndex)
  {
   const CAtlREMatchContext<>::RECHAR* szStart = 0;
   const CAtlREMatchContext<>::RECHAR* szEnd = 0;
   mcUrl.GetMatch(nGroupIndex, &szStart, &szEnd);
   ptrdiff_t nLength = szEnd - szStart;
   printf("%d: \"%.*s\"\n", nGroupIndex, nLength, szStart);
  }
}

Output

上一页  1 2 3 4  下一页

Tags:ATL 正则 表达式

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接