![Tcl regexp:如何检查变量是否包含数字?](https://linux22.com/image/111675/Tcl%20regexp%EF%BC%9A%E5%A6%82%E4%BD%95%E6%A3%80%E6%9F%A5%E5%8F%98%E9%87%8F%E6%98%AF%E5%90%A6%E5%8C%85%E5%90%AB%E6%95%B0%E5%AD%97%EF%BC%9F.png)
下面是我的 tcl 脚本,用于检查变量中是否存在 0-9 数字。
set a "abc"
if {[ regexp {[0-9]*} $a ]} {
puts "Found number in $a"
} else {
puts "Doesn't find number in $a"
}
但是当我运行它时,它报告“在 abc 中找到数字”。
答案1
那是因为您使用的正则表达式表示“匹配 0 个或多个数字”。该字符串abc
与 0 个数字匹配,因此您会得到正结果。只需删除*
(“0 或更多”),它应该按预期工作:
set a "a2bc"
if {[ regexp {[0-9]} $a ]} {
puts "Found number in $a"
} else {
puts "Doesn't find number in $a"
}
答案2
在正则表达式中,*
表示“零个或多个先前指定的字符或类”。因此,您正在寻找具有零个或多个数字字符的任何字符串。这与一切相匹配。