Regex “正在搜索子字符串”;52“;“在可变值中”;52/80“;不';我不能在TCL工作

Regex “正在搜索子字符串”;52“;“在可变值中”;52/80“;不';我不能在TCL工作,regex,tcl,regexp-substr,tclsh,Regex,Tcl,Regexp Substr,Tclsh,我正在使用的代码: set channel 52/80 if {![ regexp { ([0-9]+)\/80 } $channel match cchannel ] } { puts "Channel regex-ed in \[SLVR\]\[SetAffected_channels\] is: $cchannel\n\n" } 返回错误:无法读取“cchannel”:没有此类变量 这里有什么遗漏吗?由于多余的空格,您的代码不匹配 % set channel 52/

我正在使用的代码:

set channel 52/80   
if {![ regexp { ([0-9]+)\/80 } $channel match cchannel ] } {
        puts "Channel regex-ed in \[SLVR\]\[SetAffected_channels\] is: $cchannel\n\n"
}
返回错误:无法读取“cchannel”:没有此类变量


这里有什么遗漏吗?

由于多余的空格,您的代码不匹配

% set channel 52/80   
52/80
% regexp { ([0-9]+)\/80 } $channel match cchannel
0
% regexp {([0-9]+)\/80} $channel match cchannel
1
% set match
52/80
% set cchannel
52

在这种情况下,您也不应该反转
regexp
的结果;当模式匹配时,
if
正文脚本显示为…

由于额外的空格,您的代码不匹配

% set channel 52/80   
52/80
% regexp { ([0-9]+)\/80 } $channel match cchannel
0
% regexp {([0-9]+)\/80} $channel match cchannel
1
% set match
52/80
% set cchannel
52

在这种情况下,您也不应该反转
regexp
的结果;
如果
正文脚本似乎是用于模式匹配时…

该正则表达式是如何分隔的,空格“([0-9]+)\/80`还是删除空格以获得
([0-9]+)\/80
?如何在正则表达式中引用捕获组1?为什么正斜杠转义了
\/
?顺便说一句,什么不起作用?如果你指的是我不确定我是否理解你的问题,所以留下评论而不是答案,但是如果你的问题只是捕获52而不是全部分数,我在这里调整了你的正则表达式,正则表达式是如何分隔的,空格“([0-9]+)\/80`还是删除空格以获得
([0-9]+)\/80
?如何在正则表达式中引用捕获组1?为什么正斜杠转义了
\/
?顺便说一句,如果你指的是我不确定我是否理解你的问题,请留下评论而不是答案,但是如果你的问题只是捕获52而不是全部分数,我在这里调整了你的正则表达式,谢谢你Donal。我刚刚删除了空格,它确实有效!!是的,结果的反转也不允许if块打印,因为regex在成功时返回1。谢谢Donal。我刚刚删除了空格,它确实有效!!是的,结果的反转也不允许if块打印,因为regex在成功时返回1。