删除 Tcl 中字符串中某个字符后的所有内容

Removing everything after a certain character in a string in Tcl

所以,这看起来很微不足道,但我无法解决它。

在文件行中的正则表达式 运行 之后:

(在本例中,我将查找 /Name:它也可能用于 Arch.Type 等...)

/Name: Plugin /Version: 1.0 /Arch: Windows 64 Windows 32 Linux Mac /Summary: asdasdas /Type: sdfsdf

我有一个像这样的字符串:

Plugin /Version: 1.0 /Arch: Windows 64 Windows 32 Linux Mac /Summary: asdasdas /Type: sdfsdf

我需要从这个字符串中删除第一个“/”之后的所有内容(因此只留下 "Plugin")

试试这个:

regexp {/Name: ([^/]+)} {/Name: Plugin /Version: 1.0 /Arch: Windows 64 Windows 32 Linux Mac /Summary: asdasdas /Type: sdfsdf} all match
puts $match

带括号的捕获表达式将匹配除斜线以外的任何字符一次或多次。

您可以使用以下方法删除字符串中第一个 / 之后的所有内容:

set myVar [regsub {/.*} $myVar ""]
# Old school Tcl 8.4 and before version (upgrade, man!)
regsub {/.*} $myVar "" myVar

最好不要一开始就捕获您不想要的东西。