操纵拨号代码的正则表达式匹配

manipulating regexp matching for dialcodes

我必须在 Tcl 中进行切换,returns 为输入的每个拨号代码提供足够的消息。拨号代码如下所示:

*20*
**20
*20*0
* 20 *1
* 20 *[number_made_of_3_digits]

问题是我是 tcl 和正则表达式用法的新手,所以我尝试了以下方法,但我无法使其工作:

尝试:

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" 

但什么也没发生。

谁能帮我解决这个问题?

这里有一个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)

希望这对您的进一步调查有所帮助。