Your browser does not seem to support JavaScript. As a result, your viewing experience will be diminished, and you have been placed in read-only mode.
Please download a browser that supports JavaScript, or enable it if it's disabled (i.e. NoScript).
class Trigger(MatchObject): def init(self, session, patterns, *args, **kwargs): pass
其中参数 patterns: 匹配模式,应传递字符串(正则表达式或原始数据)。多行触发时,传递一个匹配模式的列表。
之前记得在群里讨论,这样的多行触发无法预估结束边界,所以会出错,现在有好的解决办法么?
PyMUD的多行触发是以开头第一行作为标志的,所以patterns的第一行必须要是一个有明显特征的行。只要首行不会匹配到其他内容,那么后续N行的出发匹配都OK。
或者可以自己定义多个触发器来配合实现总行数不确定的情况,比如第一个触发器tri1仅触发首行,第二个tri2仅触发尾行,第三个触发器tri3用 .* 作为全部匹配。当第一个触发器触发时,打开第三个触发器,然后对每一个进行判断;当第二个触发器触发时,关闭第三个触发器,这样就能全部手动处理了。
@newstart 在 关于多行Trigger的讨论 中说:
嗯,这个方案可行
很多时候都是这么实现的,比如抓房间描述不确定多少行时,用房间名做首行触发,用出口描述做结束触发,中间再判断是什么。