我坚持使用正则表达式只返回比赛,而我希望得到跟进然后匹配

时间:2013-10-08 21:21:25

标签: regex tcl tk

TCL / TK:

问题:我希望能够获得匹配后的字符串数据,但即使我提供 regexp只有一个变量用于匹配本身,连续变量要么变空,要么我从前两个得到相同的值。

例如:

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

怎么办? TY

编辑我找到了解决方案,感谢您的回答灵感,这是一个片段

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

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

2 个答案:

答案 0 :(得分:1)

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

set args "!do dance" 
regsub -all {(!do)} $args "" output
puts $output

答案 1 :(得分:1)

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

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

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

% puts $prefix
!do
% puts $command
dance