使用变量模式进行解析
您可能希望使用变量值而不是固定字符串或数字来指定模式。 要执行此操作,请将变量的名称放在括号中。 这是 变量引用。
关于此任务
在括号内或括号外不需要空格,但您可以根据需要添加空格。
下一个解析指令中的模板包含以下文字串模式
'. '。parse var name fn init '. ' ln以下是如何将该模式指定为变量字符串模式:strngptrn='. '
parse var name fn init (strngptrn) ln如果在变量名称之前的括号前面没有等号,加号或减号,那么变量的值将被视为字符串模式。 该变量可以是先前在同一模板中设置的变量。 例如:
/* Using a variable as a string pattern */
/* The variable (delim) is set in the same template */
SAY "Enter a date (mm/dd/yy format). =====> " /* assume 11/15/90 */
pull date
parse var date month 3 delim +1 day +2 (delim) year
/* Sets: month='11'; delim='/'; day='15'; year='90' */
如果等号,加号或减号在左括号之前,那么变量的值将被视为绝对或相对位置模式。 变量的值必须是正整数或零。
该变量可以是先前在同一模板中设置的变量。 在以下示例中,前两个字段指定最后两个字段的起始字符位置。
/* Using a variable as a positional pattern */
dataline = '12 26 .....Samuel ClemensMark Twain'
parse var dataline pos1 pos2 6 =(pos1) realname =(pos2) pseudonym
/* Assigns: realname='Samuel Clemens'; pseudonym='Mark Twain' */
为什么模板中需要位置模式 6 ? 请记住,在语言处理器使用模式将源字符串划分为子串之后,会进行词解析。 因此,无法将位置模式 =(pos1) 正确解释为 =12 ,直到语言处理器拆分列 6 处的字符串并将空白定界字 12 和 26 分别分配给 pos1 和 pos2之后。