我如何在期望中使用正则表达式将这样的模式拆分为 3 个变量?
set var Gi1/0/23
请帮忙解释一下?
正则表达式模式 $var abc
这样
a --> Gi1
b --> 0
c --->23
此正则表达式应该可以捕获 3 组中的目标输入:
(\w+)/(\w+)/(\w+)
仅供参考\w
,意思是“word char”,即[a-zA-Z0-9_]
,因此它应该适用于各种输入。
以下正则表达式将捕获Fa*number*
或Gi*number*
在反向引用组 1 和反向引用组 2 中的最后一个数字
^((?:Fa|Gi)\d)/\d+/(\d+)
更新:
根据您更新的问题,这样的事情将捕获您的通用模式:
^([A-Z][a-z]\d+)/(\d+)/(\d+)
我通常遵循这个经验法则:如果您知道要保留什么,请使用正则表达式;如果您知道要丢弃什么,请使用拆分。在这里,您知道您想使用斜杠作为分隔符并获取剩余值,因此我将使用 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