如何在expect中使用regex将这样的模式分成3个变量?
set var Gi1/0/23
请帮忙解释一下?
正则表达式模式$ var a b c
这样
a --> Gi1
b --> 0
c --->23
答案 0 :(得分:2)
此正则表达式应该可以捕获3组中的目标输入:
(\w+)/(\w+)/(\w+)
仅供参考\w
表示“单词字符”,即[a-zA-Z0-9_]
,因此它适用于各种输入。
答案 1 :(得分:1)
以下正则表达式会捕获反向引用组1中的Fa*number*
或Gi*number*
以及反向引用组2中的最后一个数字
^((?:Fa|Gi)\d)/\d+/(\d+)
<强>更新强>
根据您更新的问题,类似这样的内容将捕获您的通用模式:
^([A-Z][a-z]\d+)/(\d+)/(\d+)
答案 2 :(得分:0)
我通常遵循这个经验法则:如果你知道你想要保留什么,请使用正则表达式;如果你知道你想扔掉什么,请使用拆分。在这里,您知道要使用斜杠作为分隔符并获取剩余的值,因此我将使用split。
split $var /
要将结果值分配给变量,请使用以下形式之一:
lassign [split $var /] a b c ;# for recent versions of expect
foreach {a b c} [split $var /] {break} ;# for old versions