我有三个不同的条目" 10576.53012.46344.35174" ," 10"和#34; Doc-15"在foreach循环中。在这3个条目中,我想要10576.53012.46344.35174。如何验证当前字符串是否包含多个。和数字。
我是TCL新手,需要建议
答案 0 :(得分:0)
这是一种非常适合正则表达式的任务。
字符串10576.53012.46344.35174
由RE匹配:^\d{5}(?:\.\d{5}){3}$
虽然你可能想要一些不太严格的东西(例如,每组的位数更灵活 - {{1} } - 或5
- .
之后的群组数量。
使用3
命令测试字符串是否与正则表达式匹配:
regexp
另一种方法是if {[regexp {^\d{5}(?:\.\d{5}){3}$} $theVarWithTheString]} {
puts "the regular expression matched $theVarWithTheString"
}
split
字符串,并检查每个组是否符合要求:
.
我非常喜欢自己的正则表达式方法(偶尔会有set goodBits 0
set badString 0
foreach group [split $theVarWithTheString "."] {
if {![string is integer -strict $group]} {
set badString 1
break
}
incr goodBits
}
if {!$badString && $goodBits == 4} {
puts "the string was OK"
}
的帮助)。编写非RE验证器可能具有挑战性,并且往往需要大量代码。