Путеводитель по Руководству Linux

  User  |  Syst  |  Libr  |  Device  |  Files  |  Other  |  Admin  |  Head  |



   pcreapi    ( 3 )

Perl-совместимые регулярные выражения (Perl-compatible regular expressions)

  Name  |  Pcre native api basic functions  |  Pcre native api string extraction functions  |  Pcre native api auxiliary functions  |  Pcre native api indirected functions  |  Pcre 8-bit, 16-bit, and 32-bit libraries  |  Pcre api overview  |  Newlines  |  Multithreading  |  Saving precompiled patterns for later use  |  Checking build-time options  |  Compiling a pattern  |  Compilation error codes  |  Studying a pattern  |  Locale support  |  Information about a pattern  |  Reference counts  |  Matching a pattern: the traditional function  |  Extracting captured substrings by number  |  Extracting captured substrings by name  |  Duplicate subpattern names  |    Finding all possible matches    |  Obtaining an estimate of stack usage  |  Matching a pattern: the alternative function  |  See also  |

FINDING ALL POSSIBLE MATCHES

The traditional matching function uses a similar algorithm to
       Perl, which stops when it finds the first match, starting at a
       given point in the subject. If you want to find all possible
       matches, or the longest possible match, consider using the
       alternative matching function (see below) instead. If you cannot
       use the alternative function, but still need to find all possible
       matches, you can kludge it up by making use of the callout
       facility, which is described in the pcrecallout documentation.

What you have to do is to insert a callout right at the end of the pattern. When your callout function is called, extract and save the current matched substring. Then return 1, which forces pcre_exec() to backtrack and try other alternatives. Ultimately, when it runs out of matches, pcre_exec() will yield PCRE_ERROR_NOMATCH.