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

时间:2015-04-03 14:44:42

标签: 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 sttring "*20*612"
set b [regexp { *20*(6[0-9][0-9]) } $sttring a]
puts "b= $b" 
puts "a= $a" 

但没有任何反应。

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

1 个答案:

答案 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)

我希望这可以帮助您进一步调查。