有关正则表达式的更多信息
如果在创建新模板时选择了正则表达式选项,或者等效地,如果模板顶部包含 #conform 使用正则表达式的行,则可以在编写合规性评估规则时使用正则表达式。使用正则表达式的典型规则将使用“~=”通配符运算符,如以下示例所示:
if $(interface.name) ~= "Lo*" then print "$(interface.name) is a loopback interface" end
一些最基本和最常用的正则表达式语法如下:
. |
任何单个字符。请注意,要精确匹配句点,请在点前面加上反斜杠“\”。 |
* |
前一个字符的零个或多个实例 |
+ |
上一个或多个前一个字符 |
? |
零或前一个字符 |
[ ] |
集合中的任何角色。[ch]at 匹配 “cat” 或 “hat” |
[^] |
任何不在集合中的角色。 |
( ) |
组模式。(cat|hat) 匹配 “cat” 或 “hat” |
[a-zA-Z] |
从 a 到 z 或 A 到 Z 的任何字符(包括 |
[0-9] |
从 0 到 9(含)之间的任意整数 |
\ |
在保留的正则表达式字符(如“.”或“+”)前面使用,以匹配该特定字符。例如,要完全匹配“tacacs+”,需要“tacacs\+”,因为加号在正则表达式语法中具有特殊含义。 |
由于某些用户可能会意外地将通配符与正则表达式混淆,因此合规性评估工具会自动转换某些语句,如以下示例所示:
“ATM*”会自动转换为“ATM.*” - “ATM*”也与“AT”匹配,这在大多数情况下是用户无意的。
“*ATM”会自动转换为“.*ATM”——“*ATM”实际上是非法的正则表达式语法。
在正则表达式中使用时,会考虑空格。他们不会被忽视。
部分示例如下所示:
IP地址。* |
匹配 IP 地址。 |
描述。* |
以匹配描述。 |
TACACS\+ |
精确匹配“tacacs+”,而不仅仅是“tacacs” |
版本 12\..* |
确保版本以“12”开头。 |
净值 .*00 |
确保网络 ID 以两个零结尾 |
路由器 EIGRP (100|299) |
匹配“路由器 eigrp 100”或“路由器 eigrp 299” |
tacacs-server 主机 192\.122\。[0-9]+\.[0-9]+ |
确保 IP 地址声明为 192.122.x.y,其中 x 和 y 为整数。 |