Back to top

    ReQL command: match

    Command syntax

    string.match(regexp) → null/object


    Match a string against a regular expression. If there is a match, returns an object with the fields:

    • str: The matched string
    • start: The matched string’s start
    • end: The matched string’s end
    • groups: The capture groups defined with parentheses

    If no match is found, returns null.

    Accepts RE2 syntax. You can enable case-insensitive matching by prefixing the regular expression with (?i). See the linked RE2 documentation for more flags.

    The match command does not support backreferences.

    Example: Get all users whose name starts with “A”. Because null evaluates to false in filter, you can use the result of match for the predicate.

    r.table("users").filter(doc -> doc.g("name").match("^A")).run(conn);

    Example: Get all users whose name ends with “n.”

    r.table("users").filter(doc -> doc.g("name").match("n$")).run(conn);

    Example: Get all users whose name contains “li.”

    r.table("users").filter(doc -> doc.g("name").match("li")).run(conn);

    Example: Get all users whose name is “John,” performing a case-insensitive search.

    r.table("users").filter(doc -> doc.g("name").match("(?i)^john$")).run(conn);

    Example: Retrieve the domain of a basic email.



        "start": 0,
        "end": 20,
        "str": "",
        "groups": [
                "end": 17,
                "start": 7,
                "str": ""

    You can then retrieve only the domain with g() and nth.



    Example: A failure to parse out the domain name will return null.


    Get more help

    Couldn't find what you were looking for?