benchmark | ||
debug | ||
documentation | ||
source | ||
.gdbinit | ||
.gitignore | ||
Makefile | ||
README.md |
Jëger
A regex engine.
Syntax
The aim was to follow Vim's regex syntax. Esoteric special characters such as "\zs" are not implemented, however the just is supported.
match_t * regex_match(const regex_t * const regex, const char * const string, const bool start_of_string);
Returns a sentinel terminated array of match_t
objects.
The sentinel object is defined as (match_t){ .position = -1, .width = -1, };
.
bool is_sentinel(const match_t * const match);
This is the function you must check whether a match_t
is a sentinel or not.
I.e. make this the break condition while looping the results.
Symbol | Meaning (TODO: fill in) |
---|---|
. | |
? | One or zero of the previous token |
= | Same as ? |
* | Any number of the previous token |
+ | One or more of the previous token |
\< | Start of word |
\> | End of word |
^ | Start of string |
\t | Tab |
\n | New line |
\b | |
\i | |
\I | |
\k | |
\K | |
\f | |
\F | |
\p | |
\P | |
\s | |
\d | Digit char |
\D | Not digit char |
\x | Hex char |
\X | Not hex char |
\o | Octal char |
\O | Not octal char |
\w | Word char |
\W | Not word char |
\h | |
\a | Ascii letter |
\l | Lowercase ascii letter |
\L | Not (lowercase ascii letter) |
\u | Uppercase ascii letter |
\U | Not (uppercase ascii letter) |
[<range>] | Any of <range> |
[^<range>] | None of <range> |