正则表达式
正则表达式(regular-expression)是一种模式匹配工具,用户根据一定的规则构建匹配模式,然后将匹配模式与目标对象进行匹配。正则表达式格式上是由1~256个普通字符和特殊字符组成的字符串。
普通字符
普通字符匹配的对象是普通字符本身。包括所有的大写和小写字母、数字、下划线、标点符号以及一些特殊符号。例如:a匹配abc中的a,10匹配10.113.25.155中的10,@匹配xxx@xxx.com中的@。
特殊字符
为帮助用户灵活地构建匹配模式,正则表达式提供了一些具有特殊含义的专用字符,也称为“元字符”(metacharacter)。表5-2是对特殊字符及其语法意义的使用描述。
特殊字符及其语法意义描述
最简单的正则表达式不包含任何特殊字符,例如,可以定义一个正则表达式“hello”,它只匹配字符串“hello”。实际应用中,是由多个普通字符和特殊字符组合使用,匹配某些特征的字符串。
特殊字符的退化
1、某些特殊字符如果处在如下的正则表达式的特殊位置时,会引起退化,成为普通字符。
2、特殊字符处在转义符号‘\’之后,则发生转义,变为匹配该字符本身。
3、特殊字符“*”、“+”、“?”,处于正则表达式的第一个字符位置。例如:+45匹配+45,abc(*def)匹配abc*def。
4、特殊字符“^”,不在正则表达式的第一个字符位置。例如:abc^匹配abc^。
5、特殊字符“$”,不在正则表达式的最后一个字符位置。例如:12$2匹配12$2。
右括号“)”或者“]”没有对应的左括号“(”或“[”。例:abc)匹配abc),0-9]匹配0-9]。
注:除非特别说明,特殊字符的退化也适用于括号“()”内包含的子正则表达式。
正则表达式的使用方法
使用正则表达式过滤命令行显示信息的方法有两种:
1、在命令中指定过滤方式:在命令行中通过输入begin、exclude或include关键字加正则表达式的方式来过滤显示。
2、在分屏显示时指定过滤方式:在分屏显示时,使用“/”、“-”或“+”符号加正则表达式的方式,可以对还未显示的信息进行过滤显示。其中,“/”等同关键字begin;“-”等同关键字exclude;“+”等同关键字include。
在命令中指定过滤方式
在支持正则表达式的命令中,有三种过滤方式可供选择:
1、| begin regular-expression:输出以匹配指定正则表达式的行开始的所有行。
即过滤掉所有待输出字符串,直到出现指定的字符串(此字符串区分大小写)为止,其后的所有字符串都会显示到界面上。
2、|exclude regular-expression:输出不匹配指定正则表达式的所有行。
即待输出的字符串中没有包含指定的字符串(此字符串区分大小写),则会显示到界面上;否则过滤不显示。
3、|include regular-expression:只输出匹配指定正则表达式的所有行。
即待输出的字符串中如果包含指定的字符串(此字符串区分大小写),则会显示到界面上;否则过滤不显示。regular-expression为字符串形式(不包括中文),长度范围是1~255。
注:并非所有的display命令均支持指定过滤方式,一般只有显示信息较多的命令才支持。
系统对命令的显示信息进行过滤后,还支持上下文显示规则。上下文显示规则有如下几种:
1、before before-line-number:输出符合过滤规则的行和其前面before-line-number行的数据信息。
2、after after-line-number:输出符合过滤规则的行和其后面after-line-number行的数据信息。
3、before before-line-number + after after-line-number或者after after-line-number + before before-line-number:输出符合过滤规则的行和其前面before-line-number行、后面after-line-number行的数据信息。
before-line-number和after-line-number参数均为整数形式,取值范围是1~999。
在分屏显示时指定过滤方式
支持在分屏显示时指定过滤方式的命令行有:
display current-configuration
display interface
display arp
采用分屏显示时,可以在分屏提示符“—- More —-”中指定过滤类型:
/regular-expression:输出以匹配指定正则表达式的行开始的所有行。
-regular-expression:输出不匹配指定正则表达式的所有行。
+regular-expression:只输出匹配指定正则表达式的所有行