PCRE2_DFA_MATCH(3)
π PCRE2_DFA_MATCH(3): the group-chat guide π
okay bestie, we're doing the Library Functions Manual page for PCRE2_DFA_MATCH(3) today. grab a strawberry drink π and let's get into it. no cap.
β¨ NAME β¨
PCRE2 - Perl-compatible regular expressions (revised API)
π§Ύ SYNOPSIS π§Ύ
#include <pcre2.h>
int pcre2_dfa_match(const pcre2_code *code, PCRE2_SPTR subject,
PCRE2_SIZE length, PCRE2_SIZE startoffset,
uint32_t options, pcre2_match_data *match_data,
pcre2_match_context *mcontext,
int *workspace, PCRE2_SIZE wscount);
π¬ DESCRIPTION π¬
okay so this function matches a compiled regular expression against a given subject string, using an alternative matching algorithm that scans the subject string just once (except when processing lookaround assertions). no cap. But listen: this function is not Perl-compatible (the Perl-compatible matching function is pcre2_match()). iykyk.
The arguments for this function are:
codeβ points to the compiled patternsubjectβ points to the subject stringlengthβ length of the subject stringstartoffsetβ offset in the subject at which to start matchingoptionsβ option bitsmatch_dataβ points to a match data block, for resultsmcontextβ points to a match context, or isNULLworkspaceβ points to a vector of ints used as working spacewscountβ number of elements in the vector
lowkey important: the size of output vector needed to contain all the results depends on the number of simultaneous matches, not on the number of parentheses in the pattern. so using pcre2_match_data_create_from_pattern() to create the match data block is therefore not advisable when using this function. bestie, don't do it π
A match context is needed only if you want to set up a callout function or specify the heap limit or the match or the recursion depth limits. also, the length and startoffset values are code units, not characters. The options are:
PCRE2_ANCHOREDβ Match only at the first positionPCRE2_COPY_MATCHED_SUBJECTβ On success, make a private subject copyPCRE2_ENDANCHOREDβ Pattern can match only at end of subjectPCRE2_NOTBOLβ Subject is not the beginning of a linePCRE2_NOTEOLβ Subject is not the end of a linePCRE2_NOTEMPTYβ An empty string is not a valid matchPCRE2_NOTEMPTY_ATSTARTβ An empty string at the start of the subject is not a valid matchPCRE2_NO_UTF_CHECKβ Do not check the subject for UTF validity (only relevant ifPCRE2_UTFwas set at compile time)PCRE2_PARTIAL_HARDβ ReturnPCRE2_ERROR_PARTIALfor a partial match even if there is a full matchPCRE2_PARTIAL_SOFTβ ReturnPCRE2_ERROR_PARTIALfor a partial match if no full matches are foundPCRE2_DFA_RESTARTβ Restart after a partial matchPCRE2_DFA_SHORTESTβ Return only the shortest match
There are restrictions on what may appear in a pattern when using this matching function. Details are given in the pcre2matching documentation. For details of partial matching, see the pcre2partial page. There is a complete description of the PCRE2 native API in the pcre2api page and a description of the POSIX API in the pcre2posix page.
xoxo, your Unix bestie π β this page is from PCRE2 10.47, dated 31 August 2021. slay, go match something cute β¨
π¦ where this page comes from
- fedora 43: pcre2-devel 10.47-1.fc43 Β· BSD-3-Clause AND FSFULLR AND X11 AND GPL-2.0-or-later AND FSFAP AND FSFUL AND GPL-3.0-or-later
- fedora 43: pcre2-devel 10.47-1.fc43 Β· BSD-3-Clause AND FSFULLR AND X11 AND GPL-2.0-or-later AND FSFAP AND FSFUL AND GPL-3.0-or-later
- fedora 44: pcre2-devel 10.47-1.fc44.1 Β· BSD-3-Clause AND FSFULLR AND X11 AND GPL-2.0-or-later AND FSFAP AND FSFUL AND GPL-3.0-or-later
- fedora 44: pcre2-devel 10.47-1.fc44.1 Β· BSD-3-Clause AND FSFULLR AND X11 AND GPL-2.0-or-later AND FSFAP AND FSFUL AND GPL-3.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms