You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TCL中带单词边界的regexp匹配不符合预期问题求助

解决TCL 8.3中纯数字字符串的正则匹配问题

问题分析

你当前用的\m\d+\M正则是匹配单词边界内的数字,而连字符-属于非单词字符,所以6-7里的6会被当成独立的数字单词(开头是字符串起始的单词边界\m,结尾是-前的单词边界\M),导致误匹配。你实际需要的是匹配整个字符串全为数字,而非字符串内的数字片段。

解决方案

在TCL 8.3的正则规则里,用^(字符串起始锚点)和$(字符串结束锚点)限定整个字符串范围,把正则表达式改成^\d+$,这样只有当字符串从开头到结尾全部是数字时,才会匹配成功。

修改后的代码如下:

set variable1 "5"
set variable2 "6-7"
if {[regexp {^\d+$} $variable1 matchall]} {
  puts "only a number has been provided and that is $matchall"
}
if {[regexp {^\d+$} $variable2 matchall]} {
  puts "only a number has been provided and that is $matchall"
}

运行结果

执行上述代码后,只会输出:

only a number has been provided and that is 5

内容的提问来源于stack exchange,提问作者Mario Jost

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 22:43:10