Compound patterns can included positional patterns. Instead of matching data characters, positional patterns match positions within the input. The positional patterns are defined by the following OmniMark keywords:
line-start
is recognized at the beginning of a line.
line-end
is recognized at the end of a line.
word-start
is recognized at the beginning of a string of letters and/or digits.
word-end
is recognized at the end of a string of letters and/or digits.
value-start
is recognized at the beginning of a "scanned" value (that is a value at the head of a do scan
or repeat scan
action).
value-end
is recognized at the end of a "scanned" value.
content-start
is recognized at the beginning of an element's content.
content-end
is recognized at the end of an element's content.
The content-start
and content-end
patterns can be used to locate input at the boundary of an SGML element. They cannot be used to describe material that overlaps elements. Thus, no subpattern can precede content-start
or follow content-end
. These positional patterns may only appear in translate
rules.
Similarly, value-start
and value-end
can only be used in the match
part of a do scan
or repeat scan
action. value-start
cannot be preceded by a subpattern, and value-end
cannot be followed by a subpattern.
When a pattern matches and does not consume any input, the next pattern to match must consume a character. This is to avoid infinite loops.
There is no precedence to positional patterns. The first one that matches will succeed, even if other positional patterns also apply.