Previous | Contents | Index |
Patterns can contain wildcard characters. In particular, the usual OpenVMS wildcard characters are allowed: an asterisk, *
, will match zero or more characters and each percent sign, %
, will match a single character. Asterisks, percent signs, spaces, and tabs can be quoted by preceeding them with a dollar sign, $
. Quoting an asterisk or percent sign robs it of any special meaning. Spaces and tabs must be quoted to prevent them from ending prematurely a pattern or template. Literal dollar sign characters should be doubled, $$
, the first dollar sign quoting the second one. Additional wildcards available in patterns are listed in Table 5-1.
Wildcard | Description |
---|---|
% | Match exactly one character |
* | Match zero or more characters, with maximal or "greedy" left-to-right matching |
Back match | Description |
$ n* | Match the nth wildcard or glob |
Modifiers | Description |
$_ | Use minimal or "lazy" left-to-right matching |
$@ | Turn off "saving" of the succeeding wildcard or glob |
$^ | Turn on "saving" of the succeeding wildcard or glob; this is the default |
Glob | |
wildcard | Description |
$A% | Match one alphabetic character, A--Z or a--z |
$A* | Match zero or more alphabetic characters, A--Z or a--z |
$B% | Match one binary digit (0 or 1) |
$B* | Match zero or more binary digits (0 or 1) |
$D% | Match one decimal digit 0--9 |
$D* | Match zero or more decimal digits 0--9 |
$H% | Match one hexadecimal digit 0--9 or A--F |
$H* | Match zero or more hexadecimal digits 0--9 or A--F |
$O% | Match one octal digit 0--7 |
$O* | Match zero or more octal digits 0--7 |
$S% | Match one symbol set character, i.e., 0--9, A--Z, a--z, _, $ |
$S* | Match zero or more symbol set characters, i.e., 0--9, A--Z, a--z, _, $ |
$T% | Match one tab or vertical tab or space character |
$T* | Match zero or more tab or vertical tab or space characters |
$X% | A synonym for $H% |
$X* | A synonym for $H* |
$[ c]% | Match character c |
$[ c]* | Match arbitrary occurrences of character c |
$[ c 1 c 2 ... c n ]% | Match exactly one occurrence of character c 1 , c 2 , or c n |
$[ c 1 c 2 ... c n ]* | Match arbitrary occurrences of any characters c 1 , c 2 , or c n |
$[ c 1 -c n ]% | Match any one character in the range c 1 to c n |
$[ c 1 -c n ]* | Match arbitrary occurrences of characters in the range c 1 to c n |
$< IPv4> | Match an IPv4 address, ignoring bits |
$( IPv4) | Match an IPv4 address, keeping prefix bits |
${ IPv6} | Match an IPv6 address |
Note that to specify multiple modifiers, or to specify modifiers and a back match, the syntax uses just one dollar character. For instance, to back match the initial wild card, without saving the back match itself, one would use $@0
, not $@$0
.
Note that the PMDF TEST/MATCH (OpenVMS) or pmdf test -match
(UNIX) utility can be used to test mapping patterns and specifically to
test wildcard behavior in patterns.
5.3.1.1 The $_ modifier: minimal vs. maximal Matching
Asterisk, *
, wildcards maximize what they match working from left to right across the pattern. For instance, when the string a/b/c
is compared to the pattern */*
, the left asterisk will match a/b
and the right asterisk will match c
.
The $_
modifier causes wildcard matching to be minimized, where the least possible match is considered the match, working from left to right across the pattern. For instance, when the string a/b/c
is compared to the pattern $_*/$_*
, the left $_*
will match a
and the right $_*
will match b/c
.
5.3.1.2 IP Matching
With IPv4 "prefix bits" matching, an IP address or subnet is
specified, optionally followed by a slash and the number of bits from
the prefix that are significant when comparing for a match. For
instance,
$(123.45.67.0/24) |
With IPv4 "ignore bits" matching, an IP address or subnet is specified, optionally followed by a slash and the number of bits to ignore when checking for a match. For instance,
$<123.45.67.0/8> |
$<123.45.67.4/2> |
IPv6 matching matches an IPv6 address or subnet.
5.3.1.3 Character Matching
Within globs, i.e., within a $[...]
construct, the backslash character, (\), is the quote character. To represent a literal hyphen, -
, or right bracket, ]
, within a glob the hyphen or right bracket must be quoted with a
backslash.
All other characters in a pattern just represent and match themselves. In particular, single and double quote characters as well as parentheses have no special meaning in either mapping patterns or templates; they are just ordinary characters. This makes it easy to write entries that correspond to illegal addresses or partial addresses.
Also note that within a single $[...]
construct, there can be multiple ranges of characters (
c1-
cn) and multiple lists of characters (c1c2...cn
), mixed and matched.
Previous | Next | Contents | Index |