跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
  • 世界
  • 用户
  • 群组
皮肤
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(Cerulean)
  • 不使用皮肤
折叠
品牌标识

PyMUD官方论坛

  1. 主页
  2. 版块
  3. PyMUD讨论区
  4. 关于多行Trigger的讨论

关于多行Trigger的讨论

已定时 已固定 已锁定 已移动 PyMUD讨论区
5 帖子 2 发布者 37 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • T 离线
    T 离线
    terry
    编写于 最后由 编辑
    #1

    class Trigger(MatchObject):
    def init(self, session, patterns, *args, **kwargs):
    pass

    其中参数
    patterns:
    匹配模式,应传递字符串(正则表达式或原始数据)。多行触发时,传递一个匹配模式的列表。

    之前记得在群里讨论,这样的多行触发无法预估结束边界,所以会出错,现在有好的解决办法么?

    1 条回复 最后回复
    0
    • N 离线
      N 离线
      newstart
      编写于 最后由 编辑
      #2

      PyMUD的多行触发是以开头第一行作为标志的,所以patterns的第一行必须要是一个有明显特征的行。只要首行不会匹配到其他内容,那么后续N行的出发匹配都OK。

      1 条回复 最后回复
      0
      • N 离线
        N 离线
        newstart
        编写于 最后由 编辑
        #3

        或者可以自己定义多个触发器来配合实现总行数不确定的情况,比如第一个触发器tri1仅触发首行,第二个tri2仅触发尾行,第三个触发器tri3用 .* 作为全部匹配。当第一个触发器触发时,打开第三个触发器,然后对每一个进行判断;当第二个触发器触发时,关闭第三个触发器,这样就能全部手动处理了。

        T 1 条回复 最后回复
        0
        • N newstart

          或者可以自己定义多个触发器来配合实现总行数不确定的情况,比如第一个触发器tri1仅触发首行,第二个tri2仅触发尾行,第三个触发器tri3用 .* 作为全部匹配。当第一个触发器触发时,打开第三个触发器,然后对每一个进行判断;当第二个触发器触发时,关闭第三个触发器,这样就能全部手动处理了。

          T 离线
          T 离线
          terry
          编写于 最后由 编辑
          #4

          @newstart 在 关于多行Trigger的讨论 中说:

          或者可以自己定义多个触发器来配合实现总行数不确定的情况,比如第一个触发器tri1仅触发首行,第二个tri2仅触发尾行,第三个触发器tri3用 .* 作为全部匹配。当第一个触发器触发时,打开第三个触发器,然后对每一个进行判断;当第二个触发器触发时,关闭第三个触发器,这样就能全部手动处理了。

          嗯,这个方案可行

          1 条回复 最后回复
          0
          • N 离线
            N 离线
            newstart
            编写于 最后由 编辑
            #5

            很多时候都是这么实现的,比如抓房间描述不确定多少行时,用房间名做首行触发,用出口描述做结束触发,中间再判断是什么。

            1 条回复 最后回复
            0
            回复
            • 在新帖中回复
            登录后回复
            • 从旧到新
            • 从新到旧
            • 最多赞同


            • 登录

            • 没有帐号? 注册

            • 登录或注册以进行搜索。
            Powered by NodeBB Contributors
            • 第一个帖子
              最后一个帖子
            0
            • 版块
            • 最新
            • 标签
            • 热门
            • 世界
            • 用户
            • 群组