2011-10-07 4 views
1

J'ai une question sur les expressions régulières dans tcl qu'est-ce que signifie le code suivant:les expressions régulières dans tcl

set servRef "servRef=(\\d+)" 

définir la servRef variable "servRef = (\ d +)"; Qu'est-ce que ça veut dire? Le code suivant ci-dessus est de passer le servRef comme patarmer à une fonction, prendre la valeur servRef et lui envoyer le message.

Donc, que veut dire le "servRef = (\ d +)" signifie

+0

cette ligne est juste une simple ol 'affectation variable. Cela n'a rien à voir avec les expressions régulières. '$ servRef' est-il utilisé plus tard? – SingleNegationElimination

+0

Oui, il va mettre la variable nommée "servRef" à la chaîne littérale 'servRef = (\ d +)' (une barre oblique inverse est supprimée car elle échappe à la barre oblique inverse suivante). – kostix

Répondre

3

Vous avez un peu trop réfléchi au problème. Qu'est-ce que vous avez

set servRef "servRef=(\\d+)" 

est juste une commande qui définit la variable servRef à la valeur servRef=(\d+) . Cette valeur peut être utilisée par une autre commande en tant qu'expression régulière plus tard, mais c'est juste une valeur ici.

Il est utile de se rappeler que Tcl n'a pas beaucoup de constructions contextuelles.

+3

Beaucoup? L'une des caractéristiques les plus fortes de Tcl est qu'elle n'en a aucune; tout est analysé exactement de la même manière. (Sauf pour les commandes qui réparent les arguments sélectionnés, mais ils sont documentés pour faire exactement cela). Parfois, c'est un peu frustrant pour les nouveaux arrivants car ils essaient d'utiliser des raccourcis d'autres langues - ne fonctionneront pas avec Tcl qui est trop stupide pour être surpassé - mais la régularité signifie que l'extension est simple et facile à comprendre. –

+0

@Donal - Je considère que la construction {*} est quelque peu sensible au contexte. On pourrait également penser la même chose de $ pour la substitution de variables. Certes, il pousse un peu la définition de «sensible au contexte», mais je n'ai pas voulu entrer dans les détails dans ma réponse. – RHSeeger

2

Vous ne montrez pas assez de contexte pour être sûr, mais je suppose que plus tard $ serfRef sera utilisé comme modèle pour correspondre dans un commande regexp qui analyse une entrée pour une chaîne comme serfRef=1234 et extrait le 1234 dans une variable de sous-correspondance pour une utilisation ultérieure. Pour plus d'informations, voir le Tcl wiki regexp page.