# match

The `match` statement is to used search either a specified string or the contents of a named [buffer](/2.10.2/data-pipelines/extract/language/buffer.md) using a regular expression.

## Syntax

**`match`***`label expression target`*

## Details

The three parameters serve the following purposes:

| Parameter    | Value                                         |
| ------------ | --------------------------------------------- |
| *label*      | A unique name to associate with this match    |
| *expression* | The regular expression to apply to the target |
| *target*     | The data to search using the expression       |

### Label

The *label* associates a meaningful name to the search. Once the match has been attempted, two variables will be created or updated as follows:

| Variable           | Possible values              | Notes                                                                        |
| ------------------ | ---------------------------- | ---------------------------------------------------------------------------- |
| *`label`*`.STATUS` | `MATCH` `NOMATCH` `ERROR`    | The result of applying the expression (`ERROR` infers an invalid expression) |
| *`label`*`.RESULT` | *(A string)* *(Empty value)* | The text matched by the subgroup in the expression, if any                   |

These variables can be checked after the match in order to determine the result status and access the results.

### Expression

The regular expression must contain one or more characters enclosed in brackets - `(` ... `)` - the contents of which are termed a *subgroup*. If a successful match is made then the portion of the target text that was matched by the subgroup will be returned in the \_`label.RESULT`\_variable.

### Target

The *target* determines whether a supplied string or the contents of a named buffer are searched. By default the parameter will be treated as a string.

{% hint style="info" %}
If the string contains white-space then it must be enclosed in double quotes
{% endhint %}

If the *target* argument is surrounded with curly braces - `{` ... `}` - then it is taken to be the name of a buffer and the expression will be applied to the contents of that buffer.

{% hint style="warning" %}
Regular expressions are generally used for searching ASCII data. Searching binary data is possible but may be of limited usefulness.
{% endhint %}

### Examples

Search the contents of a variable for the text following the word 'connection:' with or without a capital 'C':

```
match varsearch "[Cc]onnection: (.*)" ${variable}
if (${varsearch.STATUS} = MATCH) {
    print Connection string is: ${varsearch.RESULT}
} else {
    print No match found
}
```

Search a text file previously retrieved from a HTTP request to locate the word 'Error' or 'error'

```
match error_check "([Ee]rror)" {text_data}
if (${error_check.STATUS} == MATCH) {
    print Found: ${error_check.RESULT}
} else {
    print No error was found
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://olddocs.exivity.io/2.10.2/data-pipelines/extract/language/match.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
