0

TCL/TK:

问题:我希望能够获得匹配后的字符串数据,但即使我为正则表达式提供的不仅仅是匹配本身的变量,secutive 变量要么变为空,要么我从前两个中得到相同的值。

例如:

set args "!do dance"
regsub -all {(!do)} $args prefix command
puts $prefis "!do"
puts $command "!do"

该怎么办?泰

编辑由于您的回答的启发,我找到了解决方案,这是一个片段

if { [ regsub {(!do\s+)} $args "" match ] >= 1 } {

if  { $match == "{help}" } 
4

2 回答 2

1

假设您要删除“!do”,那么您可以执行以下操作:

set args "!do dance" 
regsub -all {(!do)} $args "" output
puts $output
于 2013-10-08T22:06:12.840 回答
1

我不确定你为什么在这里使用正则表达式,看起来你正在使用 eggdrop 或其他东西。您可以轻松使用:

set prefix [lindex $args 0]
set command [lindex $args 1]

虽然你应该小心$args. 它通常用在procs 中,表示proc除了已经定义的参数之外的所有其他参数。

% puts $prefix
!do
% puts $command
dance
于 2013-10-09T05:23:48.857 回答