我必须在Tcl中进行切换,为每个输入的拨号代码返回足够的消息。拨号代码如下:
*20*
**20
*20*0
* 20 *1
* 20 *[number_made_of_3_digits]
问题在于我是tcl和regexp使用的新手,所以我尝试了下面的内容,但我无法使其工作:
尝试:
set sttring "*20*612"
set b [regexp { (\*20\*) } $sttring a]
puts "b= $b"
puts "a= $a"
另一次尝试:
set sttring "*20*612"
set b [regexp { *20*(6[0-9][0-9]) } $sttring a]
puts "b= $b"
puts "a= $a"
但没有任何反应。
有人可以帮我解决这个问题吗?
答案 0 :(得分:1)
以下是sample program供您查看:
set sttring "*20*612"
set rest [regexp {\*(\d{2})\*(\d{3})} $sttring match match2 match3]
puts $rest
puts $match
puts $match2
puts $match3
输出:
1 - We got a match
*20*612 - The whole match (Group 0)
20 - Captured Group 1
612 - Captured Group 2 (2nd parentheses)
我希望这可以帮助您进一步调查。