---
schema_version: "1"
id: 4fd09f365ee343a7eb1f9f96d59b6530ae6e58d9d2a38b5fd44613caca0dddc7
title: scan
collection: mulesoft
version: current
locale: en-us
portal_url: https://docs.salesforce.com/mulesoft/current/en-us/dataweave/latest/dw-core-functions-scan.md
canonical_url: https://docs.mulesoft.com/dataweave/latest/dw-core-functions-scan
source_site: docs.mulesoft.com
content_type: documentation
content_hash: 11ffe8cb79310565c63d976d5d45ace186d511c602e172bca1c6841cb533a6c5
description: MuleSoft Documentation Site
release: "2.13"
latest: true
---
---
product: DataWeave
version: 2.13
is-latest-version: true
---

# scan

> For the full documentation index, see: https://docs.mulesoft.com/llms.txt

## scan(text: String, matcher: Regex): Array<Array<String>>

Returns an array with all of the matches found in an input string.

Each match is returned as an array that contains the complete match followed by any capture groups
in your regular expression (if present).

### Parameters

<table><colgroup><col> <col></colgroup><thead><tr><th>Name</th><th>Description</th></tr></thead><tbody><tr><td><p><code>text</code></p></td><td><p>The input string to scan.</p></td></tr><tr><td><p><code>regex</code></p></td><td><p>A Java regular expression that describes the pattern match in the <code>text</code>.</p></td></tr></tbody></table>

### Example

In this example, the `regex` describes a URL. It contains three capture groups within the
parentheses, the characters before and after the period (`.`). It produces an array of matches to
the input URL and the capture groups. It uses `flatten` to change the output from an array of arrays
into a simple array. Note that a `regex` is specified within forward slashes (`//`).

#### Source

```DataWeave
%dw 2.0
output application/json
---
flatten("www.mulesoft.com" scan(/([w]*)\.([a-z]*)\.([a-z]*)/))
```

#### Output

```JSON
[ "www.mulesoft.com", "www", "mulesoft", "com" ]
```

### Example

In the example, the `regex` describes an email address. It contains two capture groups, the
characters before and after the `@`. It produces an array matches to the email addresses and capture
groups in the input string.

#### Source

```DataWeave
%dw 2.0
output application/json
---
"anypt@mulesoft.com,max@mulesoft.com" scan(/([a-z]*)@([a-z]*).com/)
```

#### Output

```JSON
[
  [ "anypt@mulesoft.com", "anypt", "mulesoft" ],
  [ "max@mulesoft.com", "max", "mulesoft" ]
]
```

## scan(text: Null, matcher: Any): Null

Helper function that enables `scan` to work with a `null` value.

_Introduced in DataWeave version 2.4.0._
