|
楼主 |
发表于 2009-7-6 12:54
|
显示全部楼层
第十二课
在行为控制段中,要进行kok的显示信息与<match_message>的比较(即匹配)
在zrobot中,两个字符串的匹配分成三种情况
* 一般匹配
就是一般的字符串比较
* 替换区配
用于一些相对固定内容的比较
例如:
如果你的中文名叫 "找k"
那么
%n说到:大家好
和
找k说到:大家好
是匹配的。这是固定替换匹配。
* 模式匹配
希望一个<match_message>能匹配多种消息,会用到这种方式
例如:
%+说到:大家好
那么只要有人说:大家好
都会被认为是匹配的。
对于模式匹配,其结果有时还需要被再次用到,这种情况就是匹配结果的记
录,只要匹配成功,就有可能记录下来。
*** 在一个消息匹配中,只能有十个模式区配。否则,zrobot会认为两个字符串不相同。
下面是替换匹配:
基本替换
%% 要比较内容是"%"
%n 要比较内容是你自已的英文名
%n 要比较内容是你自已的中文名
%k 要比较内容是你自已的nick名
%m 要比较内容是你的职业中文名
%c 要比较内容是你所属城邦的中文名
变量替换
%v? 要比较内容是该变量的当前左值
%v? 要比较内容是使用该变量的右值
%i? 不参与匹配,仅表示, 如果这次匹配成功,则该变量的变量值变成了下一个内容。
%z? 不参与匹配,仅表示, 如果这次匹配成功,则该变量的变量值值变成第一个内容。
(?为 "0" - "9"
匹配字符替换
%0, %1 - %9 用上次被记录的匹配结果产生的参数变量值替换比较。
模式匹配
%* 任意的字符串,可以为空
%+ 任意的字符串, 但至少要含有一个字符
%# 任意的数字(0-9)组合,至少要有一个
%$ 任意的[a-z, a-z, _]字符组合,至少要有一个
%x? 如果该变量的某个左值与要匹配的字符相同,表示匹配成功
如果匹配成功,该变的当前值将发生变化.
%x? 如果该变量的某个右值与要匹配的字符相同,表示匹配成功
如果匹配成功,该变的当前值将发生变化.
*** 在一个<match_message>中,最多只能有十个模式匹配内容。否则会认为
匹配不成功。
匹配结果的记录
%b 并不参与内容比较,但如果<match_message>中含有该字符串,
则表示,如果该行匹配成功,则记录所有模式匹配产生的结果
结果按顺序记录,供以后通过%0 - %9来使用
例如:
连续的两个消息被匹配成功
%b%+(%$)对你说:%* aaa对你说
%+回答你:%* bbb回答你
这时候:
%0是"aaa"而不是"bbb", 尽管第二个消息是后到的。但它没使用%b |
|