模式可以包含通配符。特别地,允许使用以下常用通配符:星号 (*) 匹配零个或多个字符,每个百分比符号 (%) 匹配一个字符。可以在星号、百分比符号、空格和制表符前加一个美元符号 ($) 来引用它们。引用星号或百分比符号将使其不具有特殊意义。必须引用空格和制表符以防止它们过早地结束模式或模板。文字美元符号字符应该采用双写的形式 ($$),第一个美元符号引用第二个美元符号。
表 10–3 映射模式通配符
通配符 |
说明 |
% |
只匹配一个字符。 |
* |
匹配零个或多个字符,最长或“最多”可匹配从左至右的全部字符。 |
向后匹配 |
说明 |
$ n* |
匹配第 n 个通配符或全局通配符。 |
修饰符 |
说明 |
$_ |
使用最少或“最短”的从左至右匹配。 |
$@ |
关闭后续通配符或全局通配符的“保存”。 |
$^ |
打开后续通配符或全局通配符的“保存”;这是默认设置。 |
全局通配符 |
说明 |
$A% |
匹配一个字母字符(A-Z 或 a-z)。 |
$A* |
匹配零或多个字母字符(A-Z 或 a-z)。 |
$B% |
匹配一个二进制数字(0 或 1)。 |
$B* |
匹配零个或多个二进制数字(0 或 1)。 |
$D% |
匹配一个十进制数字 (0-9)。 |
$D* |
匹配零个或多个十进制数字 (0-9)。 |
$H% |
匹配一个十六进制数字(0-9 或 A-F)。 |
$H* |
匹配零个或多个十六进制数字(0-9 或 A-F)。 |
$O% |
匹配一个十进制数字 (0-9)。 |
$O* |
匹配零个或多个八进制数字 (0-7)。 |
$S% |
匹配一个符号集字符(例如,0-9、A-Z、a-z、_、$)。 |
$S* |
匹配零个或多个符号集字符(即 0-9、A-Z、a-z、_、$)。 |
$T% |
匹配一个制表符或垂直制表符,或空格字符。 |
$T* |
匹配零个或多个制表符或垂直制表符,或空格字符。 |
$X% |
$H% 的同义词。 |
$X* |
$H* 的同义词。 |
$[ c]% |
匹配字符 c。 |
$[ c]* |
匹配任意出现的字符 c。 |
$[ c1 c2 ... cn ]% |
只匹配 c1、c2 或 cn 中出现的一个字符。 |
$[ c1 c2 ... cn ]* |
匹配 c1、c2 或 cn 中出现的任意字符。 |
$[ c1 -cn ]% |
匹配 c1 至 cn 范围中的任一字符。 |
$[ c1 -cn ]* |
匹配 c1 至 cn 范围内出现的任意字符。 |
$< IPv4> |
匹配一个 IPv4 地址(忽略位)。 |
$(IPv4) |
匹配一个 IPv4 地址(保留前缀位)。 |
${IPv6} |
匹配一个 IPv6 地址。 |
在全局结构内(即 $[...] 结构内)反斜杠字符 (\) 是引用字符。要表示文字连字符 - 或右方括号 ],则在全局结构内必须用反斜杠引用连字符或右方括号。
模式中的所有其他字符仅表示并匹配自身。特别地,在映射模式或模板中,单引号和双引号字符以及括号都没有特殊意义,它们只是一些普通的字符。这样一来,便很容易写入与非法地址或部分地址对应的条目。
要指定多个修饰符或指定修饰符和向后匹配,语法中只能使用一个美元字符。例如,要向后匹配初始通配符,而不保存向后匹配自身,则使用 $@0,而不是 $@$0。
请注意,imsimta test -match 实用程序可用于测试映射模式,特别是测试模式中的通配符行为。
星号通配符通过从左至右处理输入字符串,最大程度地匹配字符。例如,将输入字符串 a/b/c 与模式 */* 进行比较时,左边的星号将匹配 a/b,右边的星号匹配剩余部分 c。
$_ 修饰符使通配符匹配最小化,将最小匹配视为匹配,从左至右处理模式。例如,将字符串 a/b/c 与模式 $_*/$_* 进行比较时,左边的 $_* 将匹配 a,右边的 $_* 则匹配 b/c。