tcl/expect中的正则表达式

3 tcl expect

我对期望中的正则表达式有疑问,

我使用以下表达式:

expect {
    -re "PLAYER: (RON)_(\[0-9]*)"
    ###do something using switch
}
Run Code Online (Sandbox Code Playgroud)

匹配输出的格式如下"PLAYER:RON_90",其输出的第一部分始终是相同的:"PLAYER:RON_",但它(第一部分后的名称),第二部分是变化alawys,有时是PLAYER:RON_90,有时是PLAYER:RON_87,PLAYER:RON_75我想要做的不同基于第二部分的第一个数字的动作,例如:如果是PLAYER:RON_second part(90到99),则执行动作1,如果是PLAYER:RON_second part(80到89),执行动作2,如果是PLAYER:RON_second part(70到79),执行动作2 行动3.

如何实现呢?修改正则表达式?还是其他一些方法?有人可以帮忙吗?

Hai*_* Vu 8

怎么样:

expect {
    -re {PLAYER RON_(\d+)} {
}
Run Code Online (Sandbox Code Playgroud)

符号\ d +表示"至少一个十进制数字".

更新:

expect -re {PLAYER RON_(\d+)} {
    set playerNumber $expect_out(1,string)
    set playerGroup [expr {$playerNumber / 10}]
    switch -- $playerGroup {
        8 { puts "80-89" }
        9 { puts "90-99" }
        10 { puts "100-109" }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我们有一个匹配,那么playerNumber将是紧跟在后面的数字,RON_而且玩家组将是您正在寻找的.