text.regexGroups

Description

Extracts all matches and capture groups from a string using a regular expression pattern. Returns a nested array where each match contains the full match and any captured groups.

Syntax

flex.text.regexGroups(string, regex)

Parameters

Parameter Type Required Description
string string Yes The string to search in
regex string Yes The regular expression pattern (applied globally)

Returns

Type: list of lists

A nested array where each inner array represents one match and contains the full match followed by any capture groups. Returns null if input string is null.

Examples

Example 1: Extract Email Components

WITH 'Contact: john@example.com or jane@test.org' AS text
RETURN flex.text.regexGroups(text, '(\\w+)@(\\w+\\.\\w+)') AS matches

Output:

matches
----------------------------------------------------
[["john@example.com", "john", "example.com"], 
 ["jane@test.org", "jane", "test.org"]]

Example 2: Parse Date Components

WITH '2024-01-15 and 2024-12-25' AS dates
RETURN flex.text.regexGroups(dates, '(\\d{4})-(\\d{2})-(\\d{2})') AS parsed

Output:

parsed
-------------------------------------------------
[["2024-01-15", "2024", "01", "15"],
 ["2024-12-25", "2024", "12", "25"]]

Example 3: Extract URLs and Protocol

MATCH (d:Document)
WITH d, flex.text.regexGroups(d.content, '(https?)://([\\w.]+)') AS urls
WHERE size(urls) > 0
RETURN d.title, urls

Notes

  • Returns null if input string is null
  • The regex is applied globally (finds all matches)
  • Each match array contains: [fullMatch, group1, group2, …]
  • Useful for parsing structured text, extracting data patterns
  • More powerful than simple string search for complex patterns

See Also