Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
REGEXP(3)		   Library Functions Manual		     REGEXP(3)

       regcomp,	 regcomplit,  regcompnl,  regexec,  regsub, rregexec, rregsub,
       regerror	- regular expression

       #include	<u.h>
       #include	<libc.h>
       #include	<regexp.h>

       Reprog  *regcomp(char *exp)

       Reprog  *regcomplit(char	*exp)

       Reprog  *regcompnl(char *exp)

       int  regexec(Reprog *prog, char *string,	Resub *match, int msize)

       void regsub(char	*source, char *dest, int dlen, Resub *match, int msize)

       int  rregexec(Reprog *prog, Rune	*string, Resub *match, int msize)

       void rregsub(Rune *source, Rune *dest, int dlen,	Resub *match, int msize)

       void regerror(char *msg)

       Regcomp compiles	a regular expression and returns a pointer to the gen-
       erated  description.   The space	is allocated by	and may	be released by
       free.  Regular expressions are exactly as in

       Regcomplit is like regcomp except that all characters are treated  lit-
       erally.	 Regcompnl  is	like  regcomp except that the .	 metacharacter
       matches all characters, including newlines.

       Regexec matches a null-terminated string	against	the  compiled  regular
       expression  in prog.  If	it matches, regexec returns 1 and fills	in the
       array match with	character pointers to the substrings  of  string  that
       correspond  to  the  parenthesized  subexpressions  of exp: match[i].sp
       points to the beginning and match[i].ep points just beyond the  end  of
       the  ith	 substring.  (Subexpression i begins at	the ith	left parenthe-
       sis, counting from 1.)  Pointers	in match[0]  pick  out	the  substring
       that  corresponds  to the whole regular expression.  Unused elements of
       match are filled	with zeros.  Matches involving and are extended	as far
       as  possible.  The number of array elements in match is given by	msize.
       The structure of	elements of match is:

	      typedef struct {
		      union {
			 char *sp;
			 Rune *rsp;
		      }	s;
		      union {
			 char *ep;
			 Rune *rep;
		      }	e;
	      }	Resub;

       If match[0].s.sp	is nonzero on entry, regexec starts matching  at  that
       point  within  string.	If match[0].e.ep is nonzero on entry, the last
       character matched is the	one preceding that point.

       Regsub places in	dest a substitution instance of	source in the  context
       of  the last regexec performed using match.  Each instance of \n, where
       n is a digit, is	replaced by the	string delimited  by  match[n].sp  and
       match[n].ep.   Each  instance of	is replaced by the string delimited by
       match[0].sp and match[0].ep.  The substitution will always be null ter-
       minated and trimmed to fit into dlen bytes.

       Regerror,  called  whenever an error is detected	in regcomp, writes the
       string msg on the standard error	file and exits.	 Regerror can  be  re-
       placed  to  perform  special  error  processing.	  If the user supplied
       regerror	returns	rather than exits, regcomp will	return 0.

       Rregexec	and rregsub are	 variants  of  regexec	and  regsub  that  use
       strings of Runes	instead	of strings of chars.  With these routines, the
       rsp and rep fields of the match array elements should be	used.


       Regcomp returns 0 for an	illegal	expression or other failure.   Regexec
       returns 0 if string is not matched.

       There  is  no  way  to specify or match a NUL character;	NULs terminate
       patterns	and strings.



Want to link to this manual page? Use this URL:

home | help