Templates that contain string patterns
A string pattern matches characters in the source string to indicate where to split it. A string pattern can be literal or variable.
- Literal string pattern
- One or more characters within quotation marks.
- Variable string pattern
- A variable within parentheses with no plus (
+) or minus (-) or equal sign (=) before the left parenthesis. See Variable patterns for details.
var1 var2 /* simple template */
var1 ', ' var2 /* template with literal string pattern */', '. This template: - Puts characters from the start of the source string up to (but not including) the first
character of the match (the comma) into
var1 - Puts characters starting with the character after the last character of the match (the character
after the blank that follows the comma) and ending with the end of the string into
var2.
/* Simple template */
name='Smith, John'
parse var name ln fn /* Assigns: ln='Smith,' */
/* fn='John' */
Notice that the comma remains (the variable ln contains 'Smith,').
In the next example, the template is ln ', ' fn. This removes the comma.
/* Template with literal string pattern */
name='Smith, John'
parse var name ln ', ' fn /* Assigns: ln='Smith' */
/* fn='John' */First, the language processor scans the source string for ', '. It splits the source string at
that point. The variable ln receives data, starting with the first character of the
source string and ending with the last character before the match. The variable fn
receives data, starting with the first character after the match and ending with the end of
string.
A template with a string pattern omits data in the source string that matches the
pattern. There is a special case in which a template with a string pattern does not omit
matching data in the source string; see Combining string and positional patterns: a special case. We used
the pattern ', ' (with a blank) instead of ',' (no blank) because,
without the blank in the pattern, the variable fn receives ' John' (including a
blank).
If the source string does not contain a match for a string pattern, any variables preceding the unmatched string pattern get all the data in question. Any variables after that pattern receive the null string.
A null string is never found. It always matches the end of the source string.