正则表达式匹配TCL上的字符串

时间:2017-11-09 16:05:51

标签: regex tcl string-matching

Interface                  IP-Address      OK? Method Status           Protocol

GigabitEthernet0/0/0        unassigned      YES NVRAM  up                    up      
Gi0/0/0.201                 10.10.10.30     YES NVRAM  up                    up    
GigabitEthernet0/1          unassigned      YES NVRAM  admin down           down    
GigabitEthernet0/1.201       unassigned     YES manual admin down           down    
GigabitEthernet0/2/0        1.2.3.4         YES NVRAM  up                    up      
GigabitEthernet0/2/0.203    10.10.10.1      YES NVRAM  up                    up 

这是路由器上的命令的一些输出。我希望能够匹配以GiGigabitEthernet开头并以.20(1-20)结尾的字符串,例如.201.202.203 .220

因此它会匹配GigabitEthernet0/1.201Gi0/0/0.201

一旦匹配,我希望能够将完整的字符串放在变量中并在其他地方使用它。如果有多个匹配,我希望它们在多个变量中。

请编程帮助我。非常感谢您的帮助。提前谢谢。

1 个答案:

答案 0 :(得分:-1)

set text {Interface                  IP-Address      OK? Method Status           Protocol

GigabitEthernet0/0/0        unassigned      YES NVRAM  up                    up
Gi0/0/0.201                 10.10.10.30     YES NVRAM  up                    up
GigabitEthernet0/1          unassigned      YES NVRAM  admin down           down
GigabitEthernet0/1.201       unassigned     YES manual admin down           down
GigabitEthernet0/2/0        1.2.3.4         YES NVRAM  up                    up
GigabitEthernet0/2/0.203    10.10.10.1      YES NVRAM  up                    up }

set interfaces [regexp -all -inline {\mGi\S+\.2(?:0[1-9]|1[0-9]|20)\M} $text]
puts $interfaces
Gi0/0/0.201 GigabitEthernet0/1.201 GigabitEthernet0/2/0.203

请参阅https://tcl.tk/man/tcl8.6/TclCmd/re_syntax.htmhttps://tcl.tk/man/tcl8.6/TclCmd/regexp.htm