---
cuppy_hub: salesforce
cuppy_path: reference/official/data360/data-cloud-query-guide/references/dc-sql-reference/string-matching.md
cuppy_section: docs
cuppy_doc: NA0M-88EQ
cuppy_doc_uuid: 85183885-adff-402f-a75d-fa64225771ba
cuppy_permalink: https://cuppy.io/salesforce/d/NA0M-88EQ
cuppy_version: 1
cuppy_updated: 2026-10-23T16:16:52.575Z
cuppy_canonical: https://cuppy.io/salesforce/docs/reference/official/data360/data-cloud-query-guide/references/dc-sql-reference/string-matching
cuppy_mcp: https://cuppy.io/mcp
cuppy_body_sha256: eeaa99935ee793f1e4c516818c1aa1dacd6533f9bf7e2779eeba9bc7f2153846
# cuppy_body_sha256 is over the document body ALONE, excluding both generated blocks.
---

> Mirror of <https://developer.salesforce.com/docs/data/data-cloud-query-guide/references/dc-sql-reference/string-matching.html> (Salesforce, Data 360 Query Guide), read 2026-10-23. Salesforce's own page is the authority; this copy exists because that site refuses non-browser readers.

## String Pattern Matching

**Applies to:** ✅ Data 360 SQL ✅ Tableau Hyper API

Operators and functions for matching strings against patterns. Use pattern matching to:

*   **Search with wildcards** using `LIKE` for simple pattern matching with `%` and `_`.
*   **Match complex patterns** using regular expressions for advanced text processing.
*   **Extract and replace** substrings based on regex patterns.
*   **Count occurrences** of patterns within strings.

*   **LIKE vs regex**: Use `LIKE` for simple wildcard matching. Use regular expressions for complex patterns like repetition, alternation, and character classes.
*   **Case sensitivity**: Both `LIKE` and regex operators have case-insensitive variants (`ILIKE`, `~*`).
*   **Full string matching**: `LIKE` matches the entire string by default. Regular expressions match anywhere within the string unless anchored with `^` and `$`.

Simple pattern matching with wildcards:

*   [LIKE / ILIKE](https://developer.salesforce.com/docs/data/data-cloud-query-guide/references/dc-sql-reference/like.html) - Match patterns using `%` (any sequence) and `_` (single character) wildcards.

Match strings against regular expression patterns:

*   [Regular Expression Match Operators](https://developer.salesforce.com/docs/data/data-cloud-query-guide/references/dc-sql-reference/regex-match.html) - The `~`, `~*`, `!~`, and `!~*` operators.

Functions for searching, extracting, and manipulating text with regular expressions:

*   [REGEXP_COUNT](https://developer.salesforce.com/docs/data/data-cloud-query-guide/references/dc-sql-reference/regexp-count.html) - Count occurrences of a pattern.
*   [REGEXP_INSTR](https://developer.salesforce.com/docs/data/data-cloud-query-guide/references/dc-sql-reference/regexp-instr.html) - Find the position of a pattern.
*   [REGEXP_LIKE](https://developer.salesforce.com/docs/data/data-cloud-query-guide/references/dc-sql-reference/regexp-like.html) - Check whether a string matches a pattern.
*   [REGEXP_REPLACE](https://developer.salesforce.com/docs/data/data-cloud-query-guide/references/dc-sql-reference/regexp-replace.html) - Replace substrings matching a pattern.
*   [REGEXP_SPLIT_TO_ARRAY](https://developer.salesforce.com/docs/data/data-cloud-query-guide/references/dc-sql-reference/regexp-split-to-array.html) - Split a string into an array using a regex delimiter.
*   [REGEXP_SUBSTR](https://developer.salesforce.com/docs/data/data-cloud-query-guide/references/dc-sql-reference/regexp-substr.html) - Extract the substring that matches a pattern.

Most characters match themselves. The following metacharacters have special meaning:

| Metacharacter | Description |
| --- | --- |
| `.` | Matches any single character (except newline). |
| `|` | Matches expressions to either side of it. |
| `\` | Match a metacharacter with this escape character |

Quantifiers specify how many times the preceding pattern must occur to match. By default, quantifiers are greedy, meaning they try to match as much text as possible.

| Quantifier | Description |
| --- | --- |
| `*` | Zero or more |
| `+` | One or more |
| `?` | Zero or one |
| `{n}` | Exactly n times |
| `{n,}` | At least n times |
| `{n,m}` | Between n and m times |

Add `?` after a quantifier for lazy matching: `*?`, `+?`, `??`, `{n,}?`, `{n,m}?`. Lazy matching matches the least number of characters possible. For example, in the string `<b>bold</b>`, the greedy pattern `<.*>` matches the entire string. Whereas, the lazy pattern `<.*?>` only matches `<b>`.

The maximum number of repetitions for `{n}`, `{n,}`, `{n,m}` is 1000.

Groups `( (...) )` combine characters and metacharacters into a single unit. You can use them to apply quantifiers and flags to sub-patterns. Use `(?flags:pattern)` syntax to apply flags to a group.

| Flag | Description |
| --- | --- |
| `i` | Case-insensitive matching. |
| `c` | Case-sensitive matching. |
| `q` | Treats the pattern as a literal string. |
| `g` | Tests against all characters in the string, not just the first match. |

For example, `(?i:abc)` sets the case-insensitive flag, so it matches `abc`, `ABC`, `aBc`, and more.

Character classes are a shorthand for common group patterns.

The most general form of a character class is `[ ]`, matching any character contained in the square brackets. For example, you can abbreviate the pattern `(a|e|i|o|u)` to `[aeiou]`. Contiguous ranges of characters can be shortened by using a hyphen. For example, `[a-e]` is equivalent to `[abcde]`. The range notation disregards locale-specific collation.

You can negate character classes by placing a caret (`^`) after the opening bracket. For example, `[^aeiou]` matches any character that is not a vowel.

Most metacharacters have no special meaning inside a character class (For example, `[.]` matches a literal dot). The exceptions are `\\`, `^` (when at the start for negation), `-` (for ranges), and `]`. To include a literal `]` in a character class, put it first (for example, `[]abc]`) or escape it `[ab\\]c]`. To include a literal `-`, put it first or last, or escape it.

| Pattern | Description |
| --- | --- |
| `[[:alpha:]]` | alphabetic characters (`[A-Za-z]`) |
| `[[:upper:]]` | upper case letters (`[A-Z]`) |
| `[[:lower:]]` | lower case letters (`[a-z]`) |
| `[[:digit:]]`, `\d` | digits (`[0-9]`) |
| `[[:xdigit:]]` | hexadecimal digits (`[0-9A-Fa-f]`) |
| `\D` | non-digits (`[^0-9]`) |
| `[[:alnum:]]` | alphanumeric characters ([`0-9A-Za-z]`) |
| `[[:word:]]`, `\w` | word characters ([`0-9A-Za-z_]`) |
| `\W` | non-word characters ([^0-9a-za-z_]) |
| `[[:space:]]`, `\s` | whitespace (`[\t\n\f\r ]`) |
| `\S` | non-whitespace (`[^ \t\n\f\r]`) |
| `[[:blank:]]` | blankspace (`[\t ]`) |
| `[[:punct:]]` | punctuation (`[!-/:-@[\-\`{-~;]`) |

Anchors match a position rather than a character. These patterns can be used to anchor a match to a specific position in a string. For example, you can ensure that a given string fully matches a pattern by surrounding it with `^` and `$` anchors.

| Anchor | Description |
| --- | --- |
| `^` | Start of string (or line, if `m` flag is set) |
| `\A` | Start of string |
| `$` | End of string (or line, if `m` flag is set) |
| `\z` | End of string |
| `\b` | ASCII word boundary (`\w` on one side; `\W`, `\A`, or `\z` on the other) |
| `\B` | Not an ASCII word boundary |

Find products starting with a specific prefix.

Search regardless of case.

Extract phone numbers from text.

Check whether values match an expected format.

Remove unwanted characters.

*   [String Functions](https://developer.salesforce.com/docs/data/data-cloud-query-guide/references/dc-sql-reference/string-func.html)


---
<!-- cuppy -->
You are reading one file. The same content is free over MCP at https://cuppy.io/mcp with no signup: ranked search across all 376 documents in this hub, the merged view when you work in a layer, known workarounds matched to the error you hit, and depth control so you spend tokens on what you need. Start with the `_hello` tool. How to connect: https://cuppy.io/salesforce/ Something wrong in this document? Report it with the `session feedback` tool on the same endpoint.
<!-- /cuppy -->
