/[pcre]/code/trunk/pcredemo.c
ViewVC logotype

Diff of /code/trunk/pcredemo.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 97 by ph10, Mon Mar 5 12:36:47 2007 UTC revision 477 by ph10, Sun Jan 3 15:53:09 2010 UTC
# Line 4  Line 4 
4    
5  /* This is a demonstration program to illustrate the most straightforward ways  /* This is a demonstration program to illustrate the most straightforward ways
6  of calling the PCRE regular expression library from a C program. See the  of calling the PCRE regular expression library from a C program. See the
7  pcresample documentation for a short discussion.  pcresample documentation for a short discussion ("man pcresample" if you have
8    the PCRE man pages installed).
9    
10  Compile thuswise:  In Unix-like environments, if PCRE is installed in your standard system
11    gcc -Wall pcredemo.c -I/usr/local/include -L/usr/local/lib \  libraries, you should be able to compile this program using this command:
12      -R/usr/local/lib -lpcre  
13    gcc -Wall pcredemo.c -lpcre -o pcredemo
14    
15    If PCRE is not installed in a standard place, it is likely to be installed with
16    support for the pkg-config mechanism. If you have pkg-config, you can compile
17    this program using this command:
18    
19    gcc -Wall pcredemo.c `pkg-config --cflags --libs libpcre` -o pcredemo
20    
21    If you do not have pkg-config, you may have to use this:
22    
23    gcc -Wall pcredemo.c -I/usr/local/include -L/usr/local/lib \
24      -R/usr/local/lib -lpcre -o pcredemo
25    
26  Replace "/usr/local/include" and "/usr/local/lib" with wherever the include and  Replace "/usr/local/include" and "/usr/local/lib" with wherever the include and
27  library files for PCRE are installed on your system. Only some operating  library files for PCRE are installed on your system. Only some operating
28  systems (e.g. Solaris) use the -R option.  systems (e.g. Solaris) use the -R option.
 */  
29    
30    Building under Windows:
31    
32    If you want to statically link this program against a non-dll .a file, you must
33    define PCRE_STATIC before including pcre.h, otherwise the pcre_malloc() and
34    pcre_free() exported functions will be declared __declspec(dllimport), with
35    unwanted results. So in this environment, uncomment the following line. */
36    
37  #ifdef HAVE_CONFIG_H  /* #define PCRE_STATIC */
 #  include <config.h>  
 #endif  
38    
39  #include <stdio.h>  #include <stdio.h>
40  #include <string.h>  #include <string.h>
# Line 132  printf("\nMatch succeeded at offset %d\n Line 148  printf("\nMatch succeeded at offset %d\n
148    
149  /*************************************************************************  /*************************************************************************
150  * We have found the first match within the subject string. If the output *  * We have found the first match within the subject string. If the output *
151  * vector wasn't big enough, set its size to the maximum. Then output any *  * vector wasn't big enough, say so. Then output any substrings that were *
152  * substrings that were captured.                                         *  * captured.                                                              *
153  *************************************************************************/  *************************************************************************/
154    
155  /* The output vector wasn't big enough */  /* The output vector wasn't big enough */
# Line 158  for (i = 0; i < rc; i++) Line 174  for (i = 0; i < rc; i++)
174  /**************************************************************************  /**************************************************************************
175  * That concludes the basic part of this demonstration program. We have    *  * That concludes the basic part of this demonstration program. We have    *
176  * compiled a pattern, and performed a single match. The code that follows *  * compiled a pattern, and performed a single match. The code that follows *
177  * first shows how to access named substrings, and then how to code for    *  * shows first how to access named substrings, and then how to code for    *
178  * repeated matches on the same subject.                                   *  * repeated matches on the same subject.                                   *
179  **************************************************************************/  **************************************************************************/
180    
# Line 217  if (namecount <= 0) printf("No named sub Line 233  if (namecount <= 0) printf("No named sub
233  *                                                                        *  *                                                                        *
234  * If the previous match WAS for an empty string, we can't do that, as it *  * If the previous match WAS for an empty string, we can't do that, as it *
235  * would lead to an infinite loop. Instead, a special call of pcre_exec() *  * would lead to an infinite loop. Instead, a special call of pcre_exec() *
236  * is made with the PCRE_NOTEMPTY and PCRE_ANCHORED flags set. The first  *  * is made with the PCRE_NOTEMPTY_ATSTART and PCRE_ANCHORED flags set.    *
237  * of these tells PCRE that an empty string is not a valid match; other   *  * The first of these tells PCRE that an empty string at the start of the *
238  * possibilities must be tried. The second flag restricts PCRE to one     *  * subject is not a valid match; other possibilities must be tried. The   *
239  * match attempt at the initial string position. If this match succeeds,  *  * second flag restricts PCRE to one match attempt at the initial string  *
240  * an alternative to the empty string match has been found, and we can    *  * position. If this match succeeds, an alternative to the empty string   *
241  * proceed round the loop.                                                *  * match has been found, and we can proceed round the loop.               *
242  *************************************************************************/  *************************************************************************/
243    
244  if (!find_all)  if (!find_all)
# Line 245  for (;;) Line 261  for (;;)
261    if (ovector[0] == ovector[1])    if (ovector[0] == ovector[1])
262      {      {
263      if (ovector[0] == subject_length) break;      if (ovector[0] == subject_length) break;
264      options = PCRE_NOTEMPTY | PCRE_ANCHORED;      options = PCRE_NOTEMPTY_ATSTART | PCRE_ANCHORED;
265      }      }
266    
267    /* Run the next matching operation */    /* Run the next matching operation */

Legend:
Removed from v.97  
changed lines
  Added in v.477

webmaster@exim.org
ViewVC Help
Powered by ViewVC 1.1.12