Go to file
2023-09-26 16:18:38 +02:00
benchmark benchmark/make is no longer a trap 2023-09-09 18:20:25 +02:00
debug follow type naming convention 2023-09-26 12:50:14 +02:00
documentation yet more work on the docs 2023-09-26 14:42:47 +02:00
source backtracking fix; '\<test' == 'ttest' bug recreated 2023-09-26 16:04:45 +02:00
.gdbinit debuging stuff 2023-09-09 12:10:23 +02:00
.gitignore . 2023-09-26 11:08:36 +02:00
Makefile clean target 2023-09-26 12:49:58 +02:00
README.md . 2023-09-26 16:18:38 +02:00

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>