Next: Rx Theory Prev: Posix Entry Points
[[:cut N:]]
sets pmatch[0].final_tag
to N and causes the matching to stop instantly. If N is 0, the overall match fails, otherwise it succeeds.
[[:(:]] ... [[:):]]
is just like \( ... \)
except that in the first case, no pmatch entries are changed, and the subexpression is not counted in the numbering of parenthesized subexpressions.
[[:(:]] ... [[:):]]
can be used when you do not need to know where a subexpression matched but are only using parentheses to effect the parsing of the regexp.
There are two reasons to use [[:(:]] ... [[:):]]
:
1. regexec will run faster.
2. Currently, only 8 backreferencable subexpressions are supported: \1 .. \9
. Using [[:(:]] ... [[:):]]
is a way to conserve backreferencable subexpression names in an expression with many parentheses.
regncomp
and regnexec
are non-standard generalizations of regcomp
and regexec
.
At compile-time they are RX_DEFAULT_DFA_CACHE_SIZE
and RX_DEFAULT_NFA_DELAY
.
If you want to mess with these (I generally don't advise it), I suggest experimenting for your particular application/memory situation; frob these by powers of two and try out the results on what you expect will be typical regexp workloads.
You can also set those parameters at run-time (before calling any regexp functions) by tweaking the corresponding variables:
rx_default_cache->bytes_allowed
and
rx_basic_unfaniverse_delay
rx_make_solutions
, rx_next_solution
, and rx_free_solutions
are a lower level alternative to the posix functions. Using those functions, you can compare a compiled regexp to a string that is not contiguous in memory or even a string that is not entirely in memory at any one time.
The code in rxposix.c points out how those functions are used.
rx_parse
, convert it to an nfa using rx_unfa
, and run the dfa using rx_init_system
, rx_advance_to_final
, and rx_terminate_system
. The dfa Scheme primitives in `rgx.c' may provide some guide.