代码之家  ›  专栏  ›  技术社区  ›  munish

期望使用regexp?

  •  2
  • munish  · 技术社区  · 12 年前

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

    set var Gi1/0/23
    

    请帮忙解释一下?

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

    使得

    a --> Gi1
    b --> 0
    c --->23
    
    3 回复  |  直到 12 年前
        1
  •  2
  •   Bohemian    12 年前

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

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

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

        2
  •  1
  •   rvalvik    12 年前

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

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

    更新:

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

    ^([A-Z][a-z]\d+)/(\d+)/(\d+) 
    
        3
  •  0
  •   glenn jackman    12 年前

    我通常遵循这条经验法则:如果你知道你想保留什么,就使用正则表达式;如果你知道你想扔掉什么,就用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