Example of Using Multipattern Functions

Using of Multipattern Regular Expression Functions

   /*String*/
   Ipp8u *srcString = (Ipp8u *)"Hello World!";



   /*1st pattern*/
   char *pattern1 = "Hello";
   /*2nd pattern*/
   char *pattern2 = "World";
   /*3rd pattern*/
   char *pattern3 = ".$";
   /*4th pattern*/
   char *pattern4 = "0 W";



   IppRegExpState* pRegExpState1;
   IppRegExpState* pRegExpState2;
   IppRegExpState* pRegExpState3;
   IppRegExpState* pRegExpState4;
   
   /*3 patterns will be used*/
   int nPatterns = 3;
   int numMatch = 30;



   int pErrOffset, i, k;



   IppRegExpMultiFind pMultiFind[3];



   IppRegExpMultiState* pState=NULL;



   /*Init multi pattern search engine*/
   ippsRegExpMultiInitAlloc(&pState,nPatterns);



   for(i=0;i<nPatterns;i++) {
      pMultiFind[i].pFind = (IppRegExpFind*)ippMalloc(numMatch*sizeof(IppRegExpFind));
      pMultiFind[i].numMultiFind = numMatch;
   }



   /*Compile 1st pattern*/
   ippsRegExpInitAlloc(pattern1, NULL,&pRegExpState1, &pErrOffset);
   ippsRegExpSetMatchLimit(numMatch,pRegExpState1);



   /*Compile 2nd pattern*/
   ippsRegExpInitAlloc(pattern2, NULL,&pRegExpState2, &pErrOffset);
   ippsRegExpSetMatchLimit(numMatch,pRegExpState2);



   /*Compile 3rd pattern*/
   ippsRegExpInitAlloc(pattern3, NULL,&pRegExpState3, &pErrOffset);
   ippsRegExpSetMatchLimit(numMatch,pRegExpState3);



   /*Compile 4th pattern*/
   ippsRegExpInitAlloc(pattern4, NULL,&pRegExpState4, &pErrOffset);
   ippsRegExpSetMatchLimit(numMatch,pRegExpState4);



   /*Add 1st, 2nd, and 3rd patterns*/
   ippsRegExpMultiAdd(pRegExpState1, 1, pState);
   ippsRegExpMultiAdd(pRegExpState2, 2, pState);
   ippsRegExpMultiAdd(pRegExpState3, 3, pState);



   /*Match*/
   ippsRegExpMultiFind_8u( (const Ipp8u*)srcString, 12, pState, pMultiFind);



   /*Output:
       RegExpID = 1
       Matches  = 1
         Hello
       RegExpID = 2
       Matches  = 1
         World
       RegExpID = 3
       Matches  = 1
         !*/



   /*Replace 2nd pattern by 4th pattern*/
   ippsRegExpMultiModify(pRegExpState4, 2, pState);
   /*Delete 3rd pattern*/
   ippsRegExpMultiDelete(3, pState);



   /*Reset destination structure*/
   for(i=0;i<nPatterns;i++) {
      pMultiFind[i].numMultiFind = numMatch;
   }



   /*Match*/
   ippsRegExpMultiFind_8u( (const Ipp8u*)srcString, 13, pState, pMultiFind);
   /*Output:
       RegExpID = 1
       Matches  = 1
         Hello
       RegExpID = 2
       Matches  = 1
         o W*/



   /*Free memory*/
   ippsRegExpMultiFree(pState);



   ippsRegExpFree(pRegExpState1);
   ippsRegExpFree(pRegExpState2);
   ippsRegExpFree(pRegExpState3);
   ippsRegExpFree(pRegExpState4);






   for(i=0;i<nPatterns;i++) {
      ippFree(pMultiFind[i].pFind);
   }

Submit feedback on this help topic

Copyright © 2000 - 2010, Intel Corporation. All rights reserved.