0

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

foo_image_v001.ext

这可以很容易地说

bar_image_v001.ext

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

我通常是一个 python 人,不太精通 TCL,但如果我能让它工作,它会在这种情况下工作得最好 =)

4

4 回答 4

2

这是一种方法:

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

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

于 2013-04-15T18:51:44.203 回答
2

替换第一个之后的所有内容_

set new [regsub {_.*} $old {}]
于 2013-04-15T18:51:52.360 回答
1

也许你可以用这个?

set string "foo_image_v001.ext"

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

foo存储在$var.

于 2013-04-15T18:52:22.057 回答
1

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

使用string命令:

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

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

set prefix [lindex [split $filename _] 0]
于 2013-04-16T21:13:12.667 回答