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)

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

home | help