regexp在期待?

时间:2013-03-08 07:20:47

标签: regex expect

如何在expect中使用regex将这样的模式分成3个变量?

set var Gi1/0/23

请帮忙解释一下?

正则表达式模式$ var a b c

这样

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

3 个答案:

答案 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
相关问题