正则表达式TCL使用程序

时间:2010-04-30 13:12:36

标签: regex tcl

我是TCL程序员的新手。在这里 - 我的第一篇文章与stackoverflow论坛。

我想写一个与任何&匹配的正则表达式只有字符串以字符A开头,以B结尾。应该显示介于两者之间的字符。例如 AXIOMB 作为来自用户的输入,以A& A开头。结束了角色B.

这是我的尝试

regexp { (^A([C-Z]+)B$)}

谢谢

1 个答案:

答案 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] ...(某些格式除外)出于安全原因排除。)