2

我如何在期望中使用正则表达式将这样的模式拆分为 3 个变量?

set var Gi1/0/23

请帮忙解释一下?

正则表达式模式 $var abc

这样

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

3 回答 3

2

此正则表达式应该可以捕获 3 组中的目标输入:

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

仅供参考\w,意思是“word char”,即[a-zA-Z0-9_],因此它应该适用于各种输入。

于 2013-03-08T09:03:29.140 回答
1

以下正则表达式将捕获Fa*number*Gi*number*在反向引用组 1 和反向引用组 2 中的最后一个数字

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

更新:

根据您更新的问题,这样的事情将捕获您的通用模式:

^([A-Z][a-z]\d+)/(\d+)/(\d+) 
于 2013-03-08T08:38:42.697 回答
0

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

split $var /

To assign the resulting values to variables, use one of these forms:

lassign [split $var /] a b c             ;# for recent versions of expect
foreach {a b c} [split $var /] {break}   ;# for old versions
于 2013-03-08T13:45:28.637 回答