【TCL语言-正则表达式--字符串匹配--实例详解】

用处:正则表达式用来获取回显中想要的字段或某些字段的个数

回显实例

optionalSwitches

一:获取回显中匹配项字段

正则表达式语法

regexp ?optionalSwitches ? patterns ?searchString ?fullMatch subMatch1 ... subMatchn

“-line” :开启行敏感

set buf ["show board-info" -r]
### 正则匹配主框 即 MPU(M)所在机框,并输出主框号:0或1 实例回显中则为0
regexp -line {
          
   MPU(M)s+S+s+(d)} $buf master_mpu_shelf master_shelf
puts master_mpu_shelf:$master_mpu_shelf
puts master_shelf:$master_shelf
输出结果:
master_mpu_shelf:MPU(M) 9900MPUCII         0
master_shelf:0


### 正则匹配备框主主控 即 MPU(M),并输出主主控:T1或T2 实例回显中则为T1
regexp -line {
          
   MPU(M)s+S+s+Ss+(Sd)} $buf master_mpu_Tn master_panel
puts master_mpu_Tn:$master_mpu_Tn
puts master_panel:$master_panel
输出结果:
master_mpu_Tn:MPU(M) 9900MPUCII         0    T1
master_panel:T1

回显

### 正则匹配备框即 MPU(S)所在机框,并输出主框号:0或1 实例回显中则为1
regexp  -line {
          
   MPU(S)s+S+s+(d)} $buf slave_mpu_shelf slave_shelf
puts  slave_mpu_shelf:$slave_mpu_shelf
puts slave_shelf:$slave_shelf
输出结果:
slave_mpu_shelf:MPU(S) 9900MPUCII         1
slave_shelf:1


### 正则匹配备框备主控即 MPU(S),并输出主主控:T1或T2 实例回显中则为T2
regexp  -line {
          
   MPU(S)s+S+s+Ss+(Sd)} $buf slave_mpu_Tn slave_panel
puts slave_mpu_Tn:$slave_mpu_Tn
puts slave_panel:$slave_panel
输出结果:
slave_mpu_Tn:MPU(S) 9900MPUCII         1    T1
slave_panel:T1

二:获取回显中匹配项字段的个数

“-all” :使正则表达式在回显字符串中尽可能多的匹配,返回找到匹配项的总数

set buf ["show board-info" -r]
set show_board_on_num [regexp -all {
          
    on } $buffer] ;#返回on的总个数,{ on } on的两边一定要带空格,否则会匹配到Online/Onshelf等中的on

puts show_board_on_num:$show_board_on_num
show_board_on_num:48

三:获取回显中匹配项字段列表

“ -all -inline” 共用,将每次匹配字段追加到列表中,输出结果是列表

set buf [ "show board-info" -t 1000 -r] 
set MPU [regexp -all -inline {
          
   8800MPU+S+} $buf]
set SFU [regexp -all -inline {
          
   88+w+SFU+S+} $buf]
set PFU [regexp -all -inline {
          
   8800+w?w?IPM+w+} $buf]
set IPM [regexp -all -inline {
          
   8800(?!MPU.)(?!IPM.)w+} $buf]

puts MPU:$MPU
puts SFU:$SFU
puts PFU:$PFU
puts IPM:$IPM

输出结果
MPU:8800MPUCII 8800MPUCII 8800MPUCII 8800MPUCII
SFU:8808SFUC(V1.1) 8808SFUC(V1.1) 8808SFUC(V1.1) 8808SFUC(V1.1) 8808SFUC(V1.1) 8808SFUC(V1.1) 8808SFUC(V1.1) 8808SFUC(V1.1)
PFU:8800LQ36E2A 8800LQ36E2A 8800LQ36E2A 8800XF48E2A 8800XF48E2A 8800UQ36E2A 8800UQ36E2A 8800LQ36E2AU18 8800LQ36E2AU18
IPM:8800IPMC 8800IPMC
经验分享 程序员 微信小程序 职场和发展