Patterns: positional

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.

Prerequisite Concepts