regex(1F) (Form and Menu Language Interpreter) regex(1F)
NAME
regex - match patterns against a string
SYNOPSIS
regex [-e] [-v "string"] [pattern template] ... pattern [template]
DESCRIPTION
The regex command takes a string from stdin and a list of
pattern/template pairs and runs regex(3G) to compare the string
against each pattern until there is a match. When a match occurs,
regex writes the corresponding template to stdout and returns TRUE.
The last (or only) pattern does not need a template. If that is the
pattern that matches the string, the function simply returns TRUE. If
no match is found, regex returns FALSE.
OPTIONS
-e regex evaluates the corresponding template and writes the result
to stdout.
-v "string"
If -v is specified, string is used instead of stdin to match
against patterns.
The argument pattern is a regular expression of the form described in
regex(3G). In most cases pattern should be enclosed in single quotes
to turn off special meanings of characters. Only the final pattern in
the list may lack a template.
The argument template may contain the strings $m0 through $m9, which
is expanded to the part of pattern enclosed in (...)$0 through (...)$9
constructs. If you use this feature, you must be sure to enclose
template in single quotes so that FMLI doesn't expand $m0 through $m9
at parse time. This feature gives regex much of the power of cut(1),
paste(1), and grep(1), and some of the capabilities of sed(1). If
there is no template, the default is "$m0$m1$m2$m3$m4$m5$m6$m7$m8$m9".
EXAMPLES
The following example shows you how to cut the 4th through 8th letters
out of a string. This example will output strin and return TRUE:
`regex -v "my string is nice" '^.{3}(.{5})$0' '$m0'`
This example shows you how to to validate input to field 5 as an
integer in a form.
valid=`regex -v "$F5" '^[0-9]+$'`
This example shows you how to to translate an environment variable
which contains one of the numbers 1, 2, 3, 4, 5 to the letters a, b,
c, d, e in a form.
value=`regex -v "$VAR1" 1 a 2 b 3 c 4 d 5 e '.*' 'Error'`
Page 1 Reliant UNIX 5.44 Printed 11/98
regex(1F) (Form and Menu Language Interpreter) regex(1F)
Use the pattern '.*' to mean anything else.
In the following example, all three lines constitute a single
backquoted expression. This expression, by itself, could be put in a
menu definition file. Backquoted expressions are expanded as they are
parsed. Output from a backquoted expression becomes part of the defin-
ition file being parsed. The expression in this example would read
/etc/passwd and make a dynamic menu of all the login IDs on the sys-
tem.
`cat /etc/passwd | regex '^([^:]*)$0.*$' '
name=$m0
action=`message "$m0 is a user"`'`
DIAGNOSTICS
If none of the patterns match, regex returns FALSE, otherwise TRUE.
NOTES
Patterns and templates must often be enclosed in single quotes to turn
off the special meanings of characters. Especially if you use the $m0
through $m9 variables in the template, since FMLI expands the vari-
ables (usually to "") before regex even sees them.
Single characters in character classes (inside []) must be listed
before character ranges, otherwise they will not be recognized. For
example, [a-zA-Z/] will not find underscores () or slashes (/), but
[/a-zA-Z] will.
The regular expressions accepted by regcmp differ slightly from other
utilities (for example, sed, grep, awk, or ed).
regex with the -e option forces subsequent commands to be ignored. In
other words if a backquoted statement appears like this:
`regex -e ...; command1; command2`
command1 and command2 would never be executed. However, dividing the
expression into two would yield the desired result.
`regex -e ...``command1; command2`
SEE ALSO
awk(1), cut(1), grep(1), paste(1), sed(1), regcmp(3G), regex(3G).
Page 2 Reliant UNIX 5.44 Printed 11/98