Frage

Ich versuche, einen regulären Ausdruck zu finden, die eine Reihe von Escape-Zeichen entsprechen arbeitet (eine Erwarten Antwort finden Sie unter diese Frage ) und eine sechsstellige Zahl (mit alphanumerischen ersten Zeichen).

Hier ist die ganze Reihe I identifizieren müssen:

\r\n\u001b[1;14HX76196

Schließlich muss ich die Zeichenfolge extrahieren:

X76196 

Hier ist, was ich bereits:

interact {
        #...
        #...
        #this expression does not identify the screen location
        #I need to find "\r\n\u001b[1;14H" AND "([a-zA-Z0-9]{1})[0-9]{5}$"
        #This regex was what I was using before.
        -nobuffer -re {^([a-zA-Z0-9]{1})?[0-9]{5}$} {
                set number $interact_out(0,string)
        }   

Ich brauche die Escape-Zeichen zu identifizieren, um zu überprüfen, ob es sich um ein Feld in diesem Bildschirmbereich ist. Also brauche ich einen regulären Ausdruck, dass der ersten Teil enthält, aber die Schrägstriche sind verwirrend ich ...

Auch wenn ich die vollständige Zeichenfolge in der $ Anzahl Variable habe, wie kann ich nur die Nummer in einer anderen Variablen in Tcl isolieren?

War es hilfreich?

Lösung 2

fand ich mit etwas mehr graben ein paar Dinge aus. Zunächst einmal war ich nicht auf der Suche am Ausgang des Programms, aber die Eingabe des Benutzers. Ich brauchte den „-o“ Flag hinzuzufügen bei der Programmausgabe zu suchen. Ich verkürzt auch die Regex nur der notwendige Teil.

Das Regex Beispiel von @rikh führte mich zu sehen, warum seine oder meine eigene regex versagt, und das war aufgrund der Tatsache, dass ich nicht am Ausgang suchen, aber die Eingabe. So ist die ursprüngliche regex, dass ich versucht war Schuld nicht aber die Daten an (fehlt das „-o“ Flag), die sah

Hier ist die vollständige Antwort auf mein Problem.

interact {
#...
    -o -nobuffer -re {(\[1;14H[a-zA-Z0-9]{1})[0-9]{5}} {
            #get number in place
            set numraw $interact_out(0,string)
            #get just number out
            set num [string range $numraw 6 11] 
            #switch to lowercase
            set num [string tolower $num]
            send_user "  stored number: $num"
    }   
}

Ich bin ein Noob mit Expect und Tcl so, wenn irgendetwas davon nicht sinnvoll oder wenn Sie weitere Einsichten in die interact Fahnen, bitte setzen Sie mich gerade.

Andere Tipps

Wenn Sie nur die Nummer am Ende wollen, dann sollte dies ausreichen ...

[0-9]{6}

Update mit neuen Informationen

\ n Unter der Annahme ist ein Newline-Zeichen, sondern als eine wörtliche \ durch eine wörtliche n gefolgt, Sie können dies tun ...

\r\n\u001B\[1;14H(X[0-9]{5})
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top