组合字符串和位置模式: 特殊情况

有一种特殊情况是,绝对和相对位置模式的工作方式不同。

关于此任务

我们展示了使用包含字符串模式的模板进行解析如何跳过与模式匹配的源字符串中的数据 (请参阅 包含字符串模式的模板)。 但是,包含以下序列的模板 不会 跳过匹配的 data.:
  • 字符串模式
  • 变量名称
  • 相对位置模式

相对位置模式相对于与字符串模式匹配的第一个字符移动。 因此,赋值包含与字符串模式匹配的源字符串中的数据。

/* Template containing string pattern, then variable name, then  */
/*  relative positional pattern does not skip over any data.     */
string='REstructured eXtended eXecutor'
parse var string var1 3 junk 'X' var2 +1 junk 'X' var3 +1 junk
say var1||var2||var3 /* Concatenates variables; displays: "REXX" */
以下是此模板的工作方式:

|var1  3|   |junk 'X'|     |var2 +1|   |junk  'X'|   |var3 +1 |  | junk |
+-------+   +--------+     +-------+   +---------+   +--------+  +------+
    |           |              |            |            |          |
Put         Starting       Starting     Starting     Starting    Starting
characters  at 3, put      with first   with char-   with        with char-
1 through   characters     'X' put 1    acter after  second 'X'  acter
2 in var1.  up to (not     (+1)         first 'X'    put 1 (+1)  after sec-
(Stopping   including)     character    put up to    character   ond 'X'
point is    first 'X'      in var2.     second 'X'   in var3.    put rest
3.)         in junk.                    in junk.                 in junk.
 
var1='RE'   junk=          var2='X'     junk=        var3='X'    junk=
            'structured e'              'tended e'              'ecutor'