Tcl IRC脚本问题:maxresults变量未正确获取max=后的数值20
问题修复:提取max=参数值错误的Tcl脚本
问题根源
你当前代码中使用split $text max=的方式完全错误:Tcl的split命令第二个参数是字符集合而非完整字符串,它会将文本中所有出现m、a、x、=的位置都作为分隔点,最终导致提取到的内容是Remix中m后的i,而非预期的20。
修复后的代码
bind pub "-|-" !a pub:a proc pub:a { nick host handle channel text } { set maxresults "" # 用正则表达式直接捕获max=后的数字,忽略大小写 if {[regexp -nocase {max=(\d+)} $text -> maxresults]} { putnow "PRIVMSG $channel :maxresults: $maxresults" } }
说明
- 使用
regexp -nocase {max=(\d+)}可以精准匹配max=(不区分大小写)后面的连续数字,通过捕获组直接将数字存入maxresults变量。 - 测试输入
!a Remix find now country=german max=20 currency=euro,会输出预期的maxresults: 20。
内容的提问来源于stack exchange,提问作者ownd
相关产品推荐
相关产品推荐

