操纵拨号代码的正则表达式匹配
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)
希望这对您的进一步调查有所帮助。
我必须在 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)
希望这对您的进一步调查有所帮助。