网络游戏《天下》 管理员手册

MudOS v21c2


     reg_assoc(3)           MudOS (26 Dec 1994)           reg_assoc(3)

     名称:
          reg_assoc() - 一个正规样式(regular pattern)子字串撷取器(extractor)

     语法:
          mixed *reg_assoc(string str, string *pat_arr, mixed
          *tok_arr, void | mixed def);

          混合 *reg_assoc(字串 str, 字串 *pat_arr, 混合 *tok_arr,
                          无参数 | 混合 def);

     用法:
          reg_assoc 将一个字串扩展(explode)为一些符合给定 pat_arr 正规
          表示(regular expression)样式字串的子字串,并且和给定的剖析单
          元(token) tok_arr 相联结。如果 def(预设值 0)有指定的话,它
          则会和一个未配对者相联结。传回值是含有二个子阵列的阵列,第一
          个是一个如下格式的阵列

               ({ 未配对 1, 配对 1, 未配对 2, 配对 2, ...,
                  未配对 n, 配对 n, 未配对 n+1 })

          而第二个则含有依序对应於配对者的剖析单元:

               ({ def, 相对於配对 1 的剖析单元, ...,
                  def, 相对於配对 n 的剖析单元, def })。
                 
          pat_arr 和 tok_arr 必须一样大小,tok_arr 的第 i 个元素是对
          应於 pat_arr 的第 i 个元素。pat_arr 可以只含有字串。

          如果 pat_arr(或 tok_arr)的大小是零的话,则只会传回
          ({ ({ str }), ({ def }) })。

     例子:
          #define STRING_PAT "\"(\\\\.|[^\\\"])*\""
          #define NUM_PAT "[0-9]+"

          #define F_STRING 1
          #define F_NUM 2

          reg_assoc("Blah \"blah\" test 203 hhh j 308 \"bacdcd\b\"acb",
            ({ STRING_PAT, NUM_PAT }), ({ F_STRING, F_NUM }), "no-match")

          将会传回
          ({ ({ "Blah ", "\"blah\"", " test ", "203", " hhh j ", "308", " ",
                "\"bacdcd\b\"", "acb" }),
             ({ "no-match", F_STRING, "no-match", F_NUM, "no-match", F_NUM,
                "no-match", F_STRING, "no-match" }) })

     翻译:
          [email protected]       97.Jul.26       (printed 3/16/95)