#include <regex.h>

regex.h

includes: _regex.h, _bounds.h, _types.h, Availability.h, sys/_types/_size_t.h, sys/_types/_wchar_t.h
40 macros · 10 functions · 3 typedefs · 2 structs

typedefregoff_t

typedef __darwin_off_t regoff_t

structregex_t

size 32, align 8
intre_magic
size_tre_nsubnumber of parenthesized subexpressions
const char *re_endpend pointer for REG_PEND
struct re_guts *re_gnone of your business :-)

typedefregex_t

typedef struct regex_t regex_t;

structregmatch_t

size 16, align 8
regoff_trm_sostart of match
regoff_trm_eoend of match

typedefregmatch_t

typedef struct regmatch_t regmatch_t;

macroREG_BASIC

**************** regcomp() flags ****************
#define REG_BASIC 0000
Basic regular expressions (synonym for 0)

macroREG_EXTENDED

#define REG_EXTENDED 0001
Extended regular expressions

macroREG_ICASE

#define REG_ICASE 0002
Compile ignoring upper/lower case

macroREG_NOSUB

#define REG_NOSUB 0004
Compile only reporting success/failure

macroREG_NEWLINE

#define REG_NEWLINE 0010
Compile for newline-sensitive matching

macroREG_NOSPEC

#define REG_NOSPEC 0020
Compile turning off all special characters

macroREG_LITERAL

#define REG_LITERAL REG_NOSPEC

macroREG_PEND

#define REG_PEND 0040
Use re_endp as end pointer

macroREG_MINIMAL

#define REG_MINIMAL 0100
Compile using minimal repetition

macroREG_UNGREEDY

#define REG_UNGREEDY REG_MINIMAL

macroREG_DUMP

#define REG_DUMP 0200
Unused

macroREG_ENHANCED

#define REG_ENHANCED 0400
Additional (non-POSIX) features

macroREG_ENOSYS

***************** regerror() flags *****************
#define REG_ENOSYS (-1)
Reserved

macroREG_NOMATCH

#define REG_NOMATCH 1
regexec() function failed to match

macroREG_BADPAT

#define REG_BADPAT 2
invalid regular expression

macroREG_ECOLLATE

#define REG_ECOLLATE 3
invalid collating element

macroREG_ECTYPE

#define REG_ECTYPE 4
invalid character class

macroREG_EESCAPE

#define REG_EESCAPE 5
trailing backslash (\)

macroREG_ESUBREG

#define REG_ESUBREG 6
invalid backreference number

macroREG_EBRACK

#define REG_EBRACK 7
brackets ([ ]) not balanced

macroREG_EPAREN

#define REG_EPAREN 8
parentheses not balanced

macroREG_EBRACE

#define REG_EBRACE 9
braces not balanced

macroREG_BADBR

#define REG_BADBR 10
invalid repetition count(s)

macroREG_ERANGE

#define REG_ERANGE 11
invalid character range

macroREG_ESPACE

#define REG_ESPACE 12
out of memory

macroREG_BADRPT

#define REG_BADRPT 13
repetition-operator operand invalid

macroREG_EMPTY

#define REG_EMPTY 14
Unused

macroREG_ASSERT

#define REG_ASSERT 15
Unused

macroREG_INVARG

#define REG_INVARG 16
invalid argument to regex routine

macroREG_ILLSEQ

#define REG_ILLSEQ 17
illegal byte sequence

macroREG_BADMAX

#define REG_BADMAX 18
maximum repetition exceeds RE_DUP_MAX

macroREG_ATOI

#define REG_ATOI 255
convert name to number (!)

macroREG_ITOA

#define REG_ITOA 0400
convert number to name (!)

macroREG_NOTBOL

**************** regexec() flags ****************
#define REG_NOTBOL 00001
First character not at beginning of line

macroREG_NOTEOL

#define REG_NOTEOL 00002
Last character not at end of line

macroREG_STARTEND

#define REG_STARTEND 00004
String start/end in pmatch[0]

macroREG_TRACE

#define REG_TRACE 00400
Unused

macroREG_LARGE

#define REG_LARGE 01000
Unused

macroREG_BACKR

#define REG_BACKR 02000
force use of backref code

macroREG_BACKTRACKING_MATCHER

#define REG_BACKTRACKING_MATCHER REG_BACKR

functionregcomp

__DARWIN_ALIAS(regcomp)
int regcomp(regex_t * __restrict, const char * __restrict, int)
man page · July 11, 2025
regcomp(3) — regular-expression library

functionregerror

__cold
size_t regerror(
	int,
	const regex_t * __restrict,
	char *_LIBC_COUNT(__errbuf_size) __restrict,
	size_t __errbuf_size
)
man page · July 11, 2025
regerror(3) — regular-expression library

functionregexec

int regexec(
	const regex_t * __restrict,
	const char * __restrict,
	size_t __nmatch,
	regmatch_t __pmatch[ __restrict _LIBC_COUNT(__nmatch)],
	int
)
gcc under c99 mode won't compile "[ __restrict]" by itself. As a workaround, a dummy argument name is added.
man page · July 11, 2025
regexec(3) — regular-expression library

functionregfree

void regfree(regex_t *)
man page · July 11, 2025
regfree(3) — regular-expression library

functionregncomp

__OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_6_0)
int regncomp(
	regex_t * __restrict,
	const char *_LIBC_COUNT(__len) __restrict,
	size_t __len,
	int
)
Darwin extensions
man page · July 11, 2025
regncomp(3) — regular-expression library

functionregnexec

__OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_6_0)
int regnexec(
	const regex_t * __restrict,
	const char *_LIBC_COUNT(__len) __restrict,
	size_t __len,
	size_t __nmatch,
	regmatch_t __pmatch[ __restrict _LIBC_COUNT(__nmatch)],
	int
)
man page · July 11, 2025
regnexec(3) — regular-expression library

functionregwcomp

__OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_6_0)
int regwcomp(regex_t * __restrict, const wchar_t * __restrict, int)
man page · July 11, 2025
regwcomp(3) — regular-expression library

functionregwexec

__OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_6_0)
int regwexec(
	const regex_t * __restrict,
	const wchar_t * __restrict,
	size_t __nmatch,
	regmatch_t __pmatch[ __restrict _LIBC_COUNT(__nmatch)],
	int
)
man page · July 11, 2025
regwexec(3) — regular-expression library

functionregwncomp

__OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_6_0)
int regwncomp(
	regex_t * __restrict,
	const wchar_t * _LIBC_COUNT(__len) __restrict,
	size_t __len,
	int
)

functionregwnexec

__OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_6_0)
int regwnexec(
	const regex_t * __restrict,
	const wchar_t * _LIBC_COUNT(__len) __restrict,
	size_t __len,
	size_t __nmatch,
	regmatch_t __pmatch[ __restrict _LIBC_COUNT(__nmatch)],
	int
)