The SPAN_REGEXP Tag
Prev | Chapter 10. Mode Definition Syntax | Next

## The SPAN_REGEXP Tag

The `SPAN_REGEXP` rule is similar to the `SPAN` rule except the start sequence is taken to be a regular expression. In addition to the attributes supported by the `SPAN` tag, the following attributes are supported:

- `HASH_CHAR` - a literal string which must be at the start of a regular expression.

- `HASH_CHARS` - a list of possible literal characters, one of which must match at the start of the regular expression.

`HASH_CHAR` and `HASH_CHARS` attributes are both optional, but you may only specify one, not both. If both are specified, `HASH_CHARS` is ignored and an error is shown. Whenever possible, use a literal prefix to specify a `SPAN_REGEXP`. If the starting prefix is always the same, use `HASH_CHAR` and provide as much prefix as possible. Only in rare cases would you omit both attributes, such as the case where there is no other reliable way to get the highlighting you need, for example, with comments in the Cobol programming language.

The regular expression match cannot span more than one line. Any text matched by groups in the `BEGIN` regular expression is substituted in the `END` string. See below for an example of where this is useful.

Regular expression syntax is described in Appendix E, Regular Expressions.

Here is a `SPAN_REGEXP` rule that highlights “read-ins” in shell scripts:

    <SPAN_REGEXP HASH_CHAR="&lt;" TYPE="LITERAL1" DELEGATE="LITERAL">
        <BEGIN><![CDATA[<<[\p{Space}'"]*([\p{Alnum}_]+)[\p{Space}'"]*]]></BEGIN>
        <END>$1</END>
    </SPAN_REGEXP>

Here is a `SPAN_REGEXP` rule that highlights constructs placed between `<#ftl` and `>`, as long as the `<#ftl` is followed by a word break:

    <SPAN_REGEXP TYPE="KEYWORD1" HASH_CHAR="&lt;" DELEGATE="EXPRESSION">
        <BEGIN>&lt;#ftl\b</BEGIN>
        <END>&gt;</END>
    </SPAN_REGEXP>

Prev | Up | Next
The SPAN Tag | Home | The EOL_SPAN Tag