处理拨号代码的regexp匹配

处理拨号代码的regexp匹配,regex,tcl,Regex,Tcl,我必须在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 sttri

我必须在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" 
但什么也没发生

有人能帮我解决这个问题吗?

这里有一个问题供您检查:

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)

我希望这能帮助你进一步的调查。

因为大括号是引用机制,里面的空格很重要:
{(\*20\*)}
是空格,星,2,0,星,空格。你能把你想要的结果和你的不同拨号码放在一起吗?我认为,目前的问题还不清楚。