Regex 在Expect缓冲区中查找字符串的正则表达式
我试图找到一个正则表达式,它可以匹配一个转义字符字符串(Expect响应,请参阅)和一个六位数(第一个字符是字母数字) 以下是我需要识别的整个字符串:Regex 在Expect缓冲区中查找字符串的正则表达式,regex,string,scripting,tcl,expect,Regex,String,Scripting,Tcl,Expect,我试图找到一个正则表达式,它可以匹配一个转义字符字符串(Expect响应,请参阅)和一个六位数(第一个字符是字母数字) 以下是我需要识别的整个字符串: \r\n\u001b[1;14HX76196 最后,我需要提取字符串: X76196 以下是我已经得到的: interact { #... #... #this expression does not identify the screen location #I need t
\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中的另一个变量中仅隔离该数字?如果您只想将数字放在末尾,那么这就足够了
[0-9]{6}
使用新信息更新
假设\n是一个换行符,而不是后跟一个文字n的文字,\n,您可以这样做
\r\n\u001B\[1;14H(X[0-9]{5})
如果你只想把数字放在最后,那么这就足够了
[0-9]{6}
使用新信息更新
假设\n是一个换行符,而不是后跟一个文字n的文字,\n,您可以这样做
\r\n\u001B\[1;14H(X[0-9]{5})
我通过进一步挖掘发现了一些东西。首先,我看的不是程序的输出,而是用户的输入。我需要添加“-o”标志来查看程序输出。我还将正则表达式缩短为必要的部分 @rikh中的regex示例让我了解了他或我自己的regex失败的原因,这是因为我不是在看输出,而是在看输入。因此,我尝试的原始正则表达式不是错误,而是正在查看的数据(缺少“-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"
}
}
我是Expect和Tcl的不速之客,因此,如果这些都没有意义,或者您对interact标志有更多的了解,请告诉我。我通过进一步挖掘发现了一些东西。首先,我看的不是程序的输出,而是用户的输入。我需要添加“-o”标志来查看程序输出。我还将正则表达式缩短为必要的部分 @rikh中的regex示例让我了解了他或我自己的regex失败的原因,这是因为我不是在看输出,而是在看输入。因此,我尝试的原始正则表达式不是错误,而是正在查看的数据(缺少“-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"
}
}
我是Expect和Tcl的noob,因此如果其中任何一个都没有意义,或者如果您对interact标志有任何进一步的了解,请告诉我。这个正则表达式在Expect脚本中,它在SSH会话中搜索响应。我需要正则表达式来匹配整个字符串\r\n\u001b[1;14HX76196.“\r\n\u001b[1;14H”部分将始终相同。“X76196”部分将始终是不同的数字。我编辑了我的问题以更好地定义它。这不仅仅是获取数字本身。我更新了我的答案以匹配。括号将允许您仅从字符串的其余部分获取Xxxxxx部分。此正则表达式位于Expect脚本中,该脚本在SSH会话中搜索响应。我需要正则表达式来匹配整个字符串\r\n\u001b[1;14HX76196.“\r\n\u001b[1;14H”部分将始终相同。“X76196”部分将始终是不同的数字。我编辑了我的问题以更好地定义它。这不仅仅是获取数字本身。我已更新了我的答案以匹配。括号将允许您仅从字符串的其余部分获取Xxxxxx部分。