vase
发表于 2010-4-4 18:41:23
呵呵 MUSH的正则对中文支持还是小有毛病的。。众所周知,GBK的编码是2字节。高字节位是x80-xFE,而低字节是x40-xFE,所以在低字节位可能会出现如(,),\,|,$等需要进行转义的字符。。
所以还是先点下转成正则表达式那个按纽比较安全。。
purbam
发表于 2010-4-4 18:44:36
原帖由 seagate 于 2010-4-4 05:38 PM 发表 http://pkuxkx.net/forum/images/common/back.gif
加^和$都是为了强匹配,其实不用大多数情况下关系不大,只要你机器人有的触发特别要命的时候最好用^[> ]{0,2}TRIGGER$的形式圈起来,以防止出现问题。
同意,加^是为了防止别人chat导致误触发(当然,防不了to chat),加$一般意义不大,除非有的输出语句后面多出一部分,前面和别的语句完全一样
所以lz如果只是为了gag的话,要是我就写成
^[> ]*\(\s*你上一个动作还没有完成.*?不能施用
这样就行了,内外功也不用分别写成两条了
(中间把中文标点通配掉是个人习惯,以防wiz在开发时误用半角标点,heihei...)
[ 本帖最后由 purbam 于 2010-4-4 06:47 PM 编辑 ]
danfeng
发表于 2010-4-4 21:46:10
在咱们这个mud里我建议还是用
^(>\s)*开头,这个开头的含义是要从头开始匹配有0或多个">空格",这是为了防止系统多加">空格",当输入命令太快后mud吞掉命令客户端的反应是在行的开头出现">空格>空格"而不不是">>空格"。当然也可以防止别人chat触发了。
在行末不加$的原因是有的语句看上去是某个字或标点符号结束,其实有可能是在其后面还有个''空格'',这时加上这个$就不能正确匹配了,这种情况我遇到过。
hba
发表于 2010-4-5 15:30:26
原帖由 danfeng 于 2010-4-4 09:46 PM 发表 http://pkuxkx.net/forum/images/common/back.gif
在咱们这个mud里我建议还是用
^(>\s)*开头,这个开头的含义是要从头开始匹配有0或多个">空格",这是为了防止系统多加">空格",当输入命令太快后mud吞掉命令客户端的反应是在行的开头出现">空格>空格"而不不是">>空格 ...
丹枫所言即是,不过用[]还是比()好。因为()是代表可提取变量,在需提取变量的语句中,它将占了一个坑。
比较了一下myu和丹枫的开头其实是一样的,就是[]和()的区别,因此我建议用^[>\s]*开头。
至于$的用法,如purbam在32楼所说,既然是为了gag,则可以不强匹配了。但是为了触发其他语句,尤其如checkbusy(你不忙)这样的短语句触发,还是加$强匹配比较好。
ajump
发表于 2020-10-22 10:03:12
原来十年前的大佬们谈论的居然是如此基础的问题……………………哈哈哈哈啊哈