les expressions régulières en tcl/attendre
J'ai une question sur les expressions régulières en attendre,
- Je utiliser l'expression suivante:
expect {
-re "PLAYER: (RON)_(\[0-9]*)"
###do something using switch
}
de faire correspondre le format suivant de sortie "PLAYER:RON_90"
, la première partie de la sortie est toujours le même: "PLAYER:RON_"
, mais la deuxième partie(le nom après la première partie) est en train de changer alawys, est parfois PLAYER:RON_90
, est parfois PLAYER:RON_87
, PLAYER:RON_75
, je veux faire une action fondée sur le premier numéro de la deuxième partie, par exemple: s'il est PLAYER:RON_second part
(90 à 99), faire de l'action 1, si elle est PLAYER:RON_second part
(de 80 à 89),faire de l'action 2, si c'est PLAYER:RON_second part
(70 à 79), faire de l'action 3.
comment réaliser cela? modifier les expressions régulières? ou d'autres moyens? quelqu'un peut-il aider?
- et aussi, si la sortie est JOUEUR:RON_106, le premier nombre doit être de 10, alors comment faire?
Vous devez vous connecter pour publier un commentaire.
Comment sur:
La notation \d+ signifie "au moins une décimale".
Mise à JOUR:
Si nous avons un match, puis le playerNumber sera le nombre à droite après le
RON_
et playerGroup seront ce que vous cherchez.switch -glob
et des modèles comme8*
et9*
.À partir de la page de manuel:
Donc, pour l'expression régulière suivante...
...vous pourriez faire ceci:
Et de la même façon, vous pouvez voir les "extra" les chiffres en cochant
[info exists expect_out(2,string)]
.*
signifie "zéro ou plus".+
signifie 1 ou plus, de sorte que vous êtes correspondant à un nombre avec au moins 2 chiffres.