下面是我的 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
在正则表达式中,*
表示“零个或多个先前指定的字符或类”。因此,您正在寻找具有零个或多个数字字符的任何字符串。这与一切相匹配。