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

FreeBSD Manual Pages

  
 
  

home | help
MYR(REGEX)							    MYR(REGEX)

NAME
       regex myr-regex

LIBRARY
       regex

SYNOPSIS
       use  regex const	compile	 : (re : byte[:] -_ std.error(regex#, status))
       const dbgcompile	   : (re : byte[:] -_ std.error(regex#,	status)) const
       free : (re : regex# -_ void)
       const  exec     : (re : regex#, str : byte[:] -_	bool) const search   :
       (re : regex#, str : byte[:] -_ bool)

DESCRIPTION
       The regex library provides functions for	compiling and evaluating regu-
       lar  expressions,  as  described	 later	in  this  document, or in myr-
       regex(7).

       regex.compile will take a string	describing a regex, and	 will  attempt
       to  compile it, returing	`std.Success regex# if the regex is valid, and
       there were no error conditions encountered during compilation.  If  the
       compilation  failed,  `std.Failure regex.status will be returned, where
       regex.status is a failure code.

       regex.dbgcompile	is identical to	regex.compile, however,	it will	 print
       debugging information as	it compiles, and each time the regex is	evalu-
       ated.

       regex.exec will take the	regex passed to	it, and	evaluate it  over  the
       text  provided,	returning the `std.Some	matches, or `std.None if there
       were no matches found. The matches must span the	whole string.

       regex.search is similar to regex.exec, but it will attempt  to  find  a
       match  somewhere	 within	 the  string,  instead of attempting to	find a
       match spanning the whole	string.

REGEX SYNTAX
       The grammar used	by libregex is below:

	   regex       : altexpr
	   altexpr     : catexpr ('|' altexpr)+
	   catexpr     : repexpr (catexpr)+
	   repexpr     : baseexpr[*+?]
	   baseexpr    : literal
		       | charclass
		       | charrange
		       | escaped
		       | '.'
		       | '^'
		       | '$'
		       | '(' regex ')'
	   charclass   : see below
	   charrange   : '[' (literal('-' literal)?)+']'

       The following metacharacters have the meanings listed below:

       Matches a single	unicode	character

       ^      Matches the beginning of a line. Does not	 consume  any  charac-
	      ters.

       $      Matches the end of a line. Does not consume any characters.

       *      Matches  any  number of repetitions of the preceding regex frag-
	      ment.

       *?     Reluctantly matches any number of	repetitions of	the  preceding
	      regex fragment.

       +      Matches one or more repetitions of the preceding regex fragment.

       +?     Reluctantly  matches  one	 or  more repetitions of the preceding
	      regex fragment.

       ?      Matches zero or one of the preceding regex fragment.

       In order	to match a literal metacharacter, it needs to be preceded by a
       '\' character.

       The following character classes are supported:

       \d     ASCII digits

       \D     Negation of ASCII	digits

       \x     ASCII Hex	digits

       \X     Negation of ASCII	Hex digits

       \s     ASCII spaces

       \S     Negation of ASCII	spaces

       \w     ASCII word characters

       \W     Negation of ASCII	word characters

       \h     ASCII whitespace characters

       \H     Negation of ASCII	whitespace characters

       \pX, \p{X}
	      Characters with unicode property 'X'

       \PX, \P{X}
	      Negation of characters with unicode property 'X'

       Unicode properties that are supported are listed	below:

       L, Letter
	      Unicode letter property

       Lu, Uppercase_Letter
	      Uppercase	letter unicode property

       Ll, Lowercase_Letter
	      Lowercase	letter unicode property

       Lt, Titlecase_Letter
	      Titlecase	letter unicode property

       N, Number
	      Number unicode property

       Z, Separator
	      Any separator character unicode property

       Zs, Space_Separator
	      Space separator unicode property

EXAMPLE
	       use std
	       use regex

	       const main = {
		   var i

		   match regex.compile(pat)
		   | `std.Ok re:
			   match regex.exec(re,	text)
			   | `std.Some matches:
				   for i = 0; i	< matches.len; i++
				       std.put("Match {}: {}0, i, matches[i])
				   ;;
			   | `std.None:	std.put("Text did not match0)
			   ;;
		   | `std.Err err:
			   std.put("failed to compile regex")
		   ;;
	       }

FILES
       The  source  code  for this compiler is available from git://git.eigen-
       state.org/git/ori/libregex.git

SEE ALSO
       6m(1)

BUGS
       This code is insufficiently tested.

       This code does not support all of the regex features that one would ex-
       pect.

				       1			    MYR(REGEX)

NAME | LIBRARY | SYNOPSIS | DESCRIPTION | REGEX SYNTAX | EXAMPLE | FILES | SEE ALSO | BUGS

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=myr-regex&sektion=3&manpath=FreeBSD+13.0-RELEASE+and+Ports>

home | help