regexp在expect中吗?

regexp在expect中吗?,regex,expect,Regex,Expect,如何使用expect中的正则表达式将这样的模式拆分为3个变量 set var Gi1/0/23 请帮忙解释一下 regexp模式$var a b c 以致 a --> Gi1 b --> 0 c --->23 下面的正则表达式将捕获后参考组1中的Fa*number*或Gi*number*,以及后参考组2中的最后一个数字 ^((?:Fa|Gi)\d)/\d+/(\d+) 更新: 根据您更新的问题,类似这样的内容将捕获您的通用模式: ^([A-Z][a-z]\d+)/(\d+

如何使用expect中的正则表达式将这样的模式拆分为3个变量

set var Gi1/0/23
请帮忙解释一下

regexp模式$var a b c

以致

a --> Gi1
b --> 0
c --->23

下面的正则表达式将捕获后参考组1中的
Fa*number*
Gi*number*
,以及后参考组2中的最后一个数字

^((?:Fa|Gi)\d)/\d+/(\d+)
更新:

根据您更新的问题,类似这样的内容将捕获您的通用模式:

^([A-Z][a-z]\d+)/(\d+)/(\d+) 

此正则表达式应用于捕获3组中的目标输入:

(\w+)/(\w+)/(\w+)

FYI
\w
表示“单词字符”,即
[a-zA-Z0-9\
,因此它应该适用于各种输入。

我通常遵循以下经验法则:如果您知道要保留的内容,请使用正则表达式;如果你知道你想扔掉什么,使用split。在这里,您知道您想要使用斜杠作为分隔符并获取剩余值,因此我将使用split

split $var /
要将结果值指定给变量,请使用以下形式之一:

lassign [split $var /] a b c             ;# for recent versions of expect
foreach {a b c} [split $var /] {break}   ;# for old versions

因为这是给expect的,所以我只想扩展一下。我使用@Bohemian的答案来实现这一点:
expect-re{^Problem\sstreams\s=\s((\d[\s]?)+$)}
,它与字符串“Problem streams=0 1 2 3 4”中的“0 1 2 3 4”匹配。然后,我可以将该匹配分配给这样的变量:
set mydigits expect\u out(0,string)
。外部参数匹配整个数字串以及它们之间的空格。内部参数匹配每个数字,因为它遇到它,所以到最后,它等于“4”,以我的字符串为例。