我试图找到一个合适匹配的转义字符的字符串(预计响应一个正则表达式,看到的这个问题)和六位数字(带有字母数字的第一个字符)。

下面是整个字符串我需要确定:

\r\n\u001b[1;14HX76196

最后,我需要提取字符串:

X76196 

下面是我已经:

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)
        }   

我需要识别转义字符来以验证它是在该屏幕区中的字段。所以,我需要一个正则表达式,其包括第一部分,但反斜杠混淆了我......

还有一次我在$ Number变量完整的字符串,我怎么隔离在Tcl的另一个变量只是多少?

有帮助吗?

解决方案 2

我发现了一些更多的挖几件事情。首先,我不看节目的输出,但用户的输入。我需要添加的“O”标志看节目输出。我还缩短了正则表达式只是所需要的部分。

从正则表达式例子 @rikh 领着我看,为什么他还是我自己的正则表达式是失败,这是由于这样的事实,我不看的输出,但输入。所以,我尝试了全新的正则表达式是没有错,但正在研究的(缺少“O”标志)的数据

下面是完整的回答我的问题。

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"
    }   
}

我是小白与期待和Tcl 所以如果这个没有意义,或者如果您有任何更多的分析上市公司互动的标志,请把我直。

其他提示

如果你只是想在最后的数字,那么这应该是足够了...

[0-9]{6}

<强>用新信息更新

假设\ n是一个新行字符,而不是字面\后跟一个字面N,就可以做到这一点...

\r\n\u001B\[1;14H(X[0-9]{5})
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top