我是TCL程序员的新手。在这里 - 我的第一篇文章与stackoverflow论坛。
我想写一个与任何&匹配的正则表达式只有字符串以字符A开头,以B结尾。应该显示介于两者之间的字符。例如 AXIOMB 作为来自用户的输入,以A& A开头。结束了角色B.
这是我的尝试
regexp { (^A([C-Z]+)B$)}
谢谢
答案 0 :(得分:3)
你非常接近:
set stringToTest "AXIOMB"
set match [regexp {^A([C-Z]*)B$} $stringToTest -> substring]
if {$match} {
puts "The middle was $substring"
}
(->
实际上是一个不常见的变量名。但是我在这里使用的是符号,因为它看起来比使用等效的someRandomDummyVariable
更好。: - ))
如果您正在寻求从命令行或控制台获取字符串,请按以下步骤操作:
命令行参数(没有Tcl解释器或脚本的名称)在全局argv
列表变量中显示为列表。因此,第一个是[lindex $::argv 0]
。
可以通过gets
命令从控制台读取一行。
set line [gets stdin]; # you can use other channel names too, of course
请注意,与C不同,Tcl中的gets
强烈抵御缓冲区溢出,scanf()
的(几乎)全部功率大约等于scan [gets stdin] ...
(某些格式除外)出于安全原因排除。)