Regular Expression to find string in Expect buffer

前端 未结 2 2019
情歌与酒
情歌与酒 2021-01-25 06:19

I\'m trying to find a regex that works to match a string of escape characters (an Expect response, see this question) and a six digit number (with alpha-numeric first character)

相关标签:
2条回答
  • 2021-01-25 06:35

    I found out a few things with some more digging. First of all I wasn't looking at the output of the program but the input of the user. I needed to add the "-o" flag to look at the program output. I also shortened the regex to just the necessary part.

    The regex example from @rikh led me to look at why his or my own regex was failing, and that was due to the fact that I wasn't looking at the output but the input. So the original regex that I tried wasn't at fault but the data being looked at (missing the "-o" flag)

    Here's the complete answer to my 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"
        }   
    }
    

    I'm a noob with Expect and Tcl so if any of this doesn't make sense or if you have any more insights into the interact flags, please set me straight.

    0 讨论(0)
  • 2021-01-25 06:53

    If you just want the number at the end, then this should be enough...

    [0-9]{6}
    

    Update with new information

    Assuming \n is a newline character, rather than a literal \ followed by a literal n, you can do this...

    \r\n\u001B\[1;14H(X[0-9]{5})
    
    0 讨论(0)
提交回复
热议问题