TCL条带表达(变化字符)

时间:2013-04-15 18:47:53

标签: regex string tcl strip

如果我有一个字符串,如:

foo_image_v001.ext

可以轻易说出来

bar_image_v001.ext

我如何使用TCL剥离第一个下划线及其右侧的所有内容,只留下'foo'或'bar'

我通常是一个蟒蛇人,不是很熟悉TCL,但如果我能让它工作,它会在这种情况下效果最好=)

4 个答案:

答案 0 :(得分:2)

这是一种方法:

set filename foo_image_v001.ext
set prefix [regsub {_.*} $filename ""]

regsub在$ filename中查找模式{_.*},并将其替换为""

答案 1 :(得分:2)

在第一个_

之后替换所有内容
set new [regsub {_.*} $old {}]

答案 2 :(得分:1)

也许你可以用它?

set string "foo_image_v001.ext"

regexp -- {^([^_]+)} $string - var

foo存储在$var

答案 3 :(得分:1)

不需要为此打破正则表达式:

使用string命令:

set prefix [string range $filename 0 [expr {[string first _ $filename] - 1}]]

另外,如果你在下划线上拆分字符串,你想要的是结果列表中的第一个元素:

set prefix [lindex [split $filename _] 0]