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

FreeBSD Manual Pages

  
 
  

home | help
RGXG(1) 			  User Commands 			 RGXG(1)

NAME
     rgxg - ReGular eXpression Generator

SYNOPSIS
     rgxg COMMAND [ARGS]

DESCRIPTION
     rgxg is a generator for (extended) regular expressions.

     For instance it is useful to generate a regular expression to exactly match
     a numeric range or all addresses of a given CIDR block.

COMMANDS
     alternation [options] [PATTERN...]

	 Generate a regular expression that matches any of the given patterns.

	 Options

	    -N	   Omit  the  outer  parentheses, if any, of the regular expres-
		   sion. This option can be useful if the generated regular  ex-
		   pression is used within another alternation.

	    -h	   Display help and exit.

	 Examples

	    Match either lion, elephant, rhino, buffalo or leopard:
	       $ rgxg alternation lion elephant rhino buffalo leopard
	       (lion|elephant|rhino|buffalo|leopard)

     cidr [options] CIDR

	 Generate  a  regular expression that matches all addresses of the given
	 CIDR block. Both IPv4 and IPv6 CIDR blocks are supported.

	 Options

	    -N	   Omit the outer parentheses, if any, of  the	regular  expres-
		   sion.  This option can be useful if the generated regular ex-
		   pression is used within another alternation.

	    -l	   Match only IPv6 addresses with lower case letters. By default
		   both lower and upper case letters are matched.

	    -U	   Match only IPv6 addresses with upper case letters. By default
		   both lower and upper case letters are matched.

	    -u	   Do not match IPv6 addresses	with  zero  compression  (second
		   form  of  text  representation of IPv6 addresses mentioned in
		   section 2.2 of RFC 4291).

	    -s	   Do not match IPv6 addresses in mixed notation (third form  of
		   text  representation  of  IPv6 addresses mentioned in section
		   2.2 of RFC 4291).

	    -h	   Display help and exit.

	 Examples

	    Match 192.168.0.0/24:
	       $ rgxg cidr 192.168.0.0/24
	       192.168.0.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])

	    Match 2001:db8:aaaa:bbbb:cccc:dddd::/96 limited to lower  case  let-
	    ters:
	       $ rgxg cidr -l 2001:db8:aaaa:bbbb:cccc:dddd::/112
	       2001:0?db8:aaaa:bbbb:cccc:dddd((::[0-9a-f]{1,4}|::|:0?0?0?0(::|:[0-9a-f]{1,4}))|:0.0(.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){2})

	    Match  2001:db8:1234::/48  restricted to uncompressed standard nota-
	    tion:
	       $ rgxg cidr -u -s 2001:db8:1234::/48
	       2001:0?[Dd][Bb]8:1234(:[0-9A-Fa-f]{1,4}){5}

     escape [options] STRING

	 Generate the regular expression which matches the given string  by  es-
	 caping the escape characters.

	 Options

	    -h	   Display help and exit.

	 Examples

	    Match '1+(2*(3-4))':
	       $ rgxg escape 1+(2*(3-4))
	       1\+\(2\*\(3-4\)\)

     help [COMMAND]

	 Describe the usage of rgxg or the given COMMAND.

     range [options] FIRST [LAST]

	 Generate  a  regular  expression  that matches the number range between
	 FIRST and LAST. If LAST is omitted the regular expression  matches  all
	 numbers which are greater than or equal FIRST. The numbers must be pos-
	 itive and given in base-10 notation.

	 Options

	    -b BASE
		   Generate  the  regular  expression  for the number range with
		   base BASE. The BASE must be in the range between  2	and  32.
		   The default base is 10.

	    -N	   Omit  the  outer  parentheses, if any, of the regular expres-
		   sion. This option can be useful if the generated regular  ex-
		   pression is used within another alternation.

	    -l	   For	bases  greater than 10 only match lower case letters. By
		   default both lower and upper case letters are matched.

	    -U	   For bases greater than 10 only match upper case  letters.  By
		   default both lower and upper case letters are matched.

	    -h	   Display help and exit.

	    -z	   Only  match numbers with leading zeros. By default the number
		   of leading zeros depends on the length (i.e.  the  number  of
		   digits)  of	LAST  (see also -m). The default is to not match
		   numbers with leading zeros.

	    -Z	   Match numbers with a variable number of leading zeros. By de-
		   fault the maximum number of	leading  zeros	depends  on  the
		   length (i.e. the number of digits) of LAST (see also -m). The
		   default is to not match numbers with leading zeros.

	    -m LENGTH
		   with -z or -Z, the minimum LENGTH of matched numbers. For in-
		   stance the number 5 with LENGTH set to 3 and -z option set is
		   matched  as	'005'.	If LENGTH is lesser than or equal to the
		   number of digits of LAST, this option has no effect.

	 Examples

	    Match the numbers from 0 to 31:
	       $ rgxg range 0 31
	       (3[01]|[12]?[0-9])

	    Match numbers from 0 to 31 with base 2:
	       $ rgxg range -b 2 0 31
	       (1[01]{0,4}|0)

	    Match 0 to 31 with base 16:
	       $ rgxg range -b 16 0 31
	       1?[0-9A-Fa-f]

	    Match 0 to 31 with base 16 limited to upper case letters:
	       $ rgxg range -b 16 -U 0 31
	       1?[0-9A-F]

	    Match 0 to 31 with base 16 limited to lower case letters:
	       $ rgxg range -b 16 -l 0 31
	       1?[0-9a-f]

	    Match 00 to 31:
	       $ rgxg range -z 0 31
	       (3[01]|[0-2][0-9])

	    Match 0000 to 0031:
	       $ rgxg range -z -m 4 0 31
	       (003[01]|00[0-2][0-9])

	    Match 0 to 31 and 00 to 31 and 000 to 031:
	       $ rgxg range -Z -m 3 0 31
	       (0?3[01]|0?[0-2]?[0-9])

	    Match 0 to 31 and omit outer parentheses:
	       $ rgxg range -N 0 31
	       3[01]|[12]?[0-9]

	    Match all numbers greater than or equal to 4096:
	       $ rgxg range 4096
	       ([1-9][0-9]{4,}|[5-9][0-9]{3}|4[1-9][0-9]{2}|409[6-9])

     version
	 Prints the version of the rgxg command.

EXIT STATUS
     The exit status is 0 if the regular expression has been successfully gener-
     ated. If an error occurred the exit status is 1.

NOTES
     The regular expressions generated by rgxg are supposed to be  used  in  any
     context. This may lead to some side effects.

     For instance consider the following:

	$ echo '192.168.0.999' | grep -E "$(rgxg cidr 192.168.0.0/24)"
	192.168.0.999
	$

     This is correct because the regular expression for '192.168.0.0/24' matches
     '192.168.0.99'.

     One can verify this by adding '-o' to grep:

	echo '192.168.0.999' | grep -oE "$(rgxg cidr 192.168.0.0/24)"
	192.168.0.99
	$

     As  rgxg  cannot  know in which context the generated regular expression is
     used, it is up to the user to ensure that the regular expression  works  as
     expected (e.g. by adding anchors like '^' and '$').

     In the example above adding line anchors leads to the expected behaviour:

	$ echo '192.168.0.999' | grep -E "^$(rgxg cidr 192.168.0.0/24)$"
	$

SEE ALSO
     regex(7)

AUTHOR
     Hannes von Haugwitz <hannes@vonhaugwitz.com>

rgxg 0.1.2			  Apr 12, 2020				 RGXG(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=rgxg&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help