Bird
Raised Fist0
PostgreSQLquery~5 mins

Regular expression functions (regexp_match, regexp_replace) in PostgreSQL - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does the PostgreSQL function regexp_match do?
It searches a string for a pattern using a regular expression and returns the first substring that matches as a text array.
Click to reveal answer
beginner
How does regexp_replace work in PostgreSQL?
It searches a string for a pattern using a regular expression and replaces the first match (by default) with a specified replacement string. Use the 'g' flag to replace all occurrences.
Click to reveal answer
intermediate
What is the return type of regexp_match in PostgreSQL?
It returns a text array containing the matched substring(s). If no match is found, it returns NULL.
Click to reveal answer
intermediate
How can you replace only the first match of a pattern using regexp_replace?
regexp_replace replaces only the first match by default (no 'g' flag). You can also specify the occurrence parameter as 1.
Click to reveal answer
beginner
Give an example of using regexp_match to extract the first word from a string.
Example: SELECT regexp_match('Hello world', '^\w+'); returns {Hello}.
Click to reveal answer
What does regexp_match('abc123', '\\d+') return?
A'123'
B{'abc'}
CNULL
D{'123'}
Which function replaces text matching a pattern in PostgreSQL?
Aregexp_replace
Breplace
Csubstring
Dregexp_match
What will regexp_replace('abc123abc', '\\d', 'X') return?
AabcX123abc
BabcXXXabc
CabcX23abc
DabcXabc
If regexp_match finds no match, what does it return?
AEmpty array
BNULL
CEmpty string
DError
How to replace only the first occurrence of a pattern using regexp_replace?
AUse 1 as occurrence parameter
BUse 'i' flag
CUse 'g' flag
DIt always replaces all occurrences
Explain how regexp_match works in PostgreSQL and what it returns.
Think about how you find a pattern in a sentence and what you get back.
You got /4 concepts.
    Describe how to use regexp_replace to change parts of a string matching a pattern.
    Imagine correcting typos in a text by pattern.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does the PostgreSQL function regexp_match('abc123', '\\d+') return?
      easy
      A. An error because of incorrect syntax
      B. The string 'abc123' unchanged
      C. An empty array because no digits are found
      D. An array with the first sequence of digits found: ['123']

      Solution

      1. Step 1: Understand regexp_match function

        The function searches the input string for the first substring matching the pattern.
      2. Step 2: Apply pattern '\\d+' to 'abc123'

        The pattern '\\d+' matches one or more digits. In 'abc123', '123' matches.
      3. Final Answer:

        An array with the first sequence of digits found: ['123'] -> Option D
      4. Quick Check:

        regexp_match returns first match array [OK]
      Hint: regexp_match returns first matching group as array [OK]
      Common Mistakes:
      • Thinking regexp_match returns the whole string
      • Expecting a string instead of an array
      • Confusing regexp_match with regexp_replace
      2. Which of the following is the correct syntax to replace all digits in 'abc123def' with '#' using regexp_replace in PostgreSQL?
      easy
      A. regexp_replace('abc123def', '\\d+', '#', 'g')
      B. regexp_replace('abc123def', '[0-9]', '#', 'g')
      C. regexp_replace('abc123def', '[0-9]+', '#')
      D. regexp_replace('abc123def', '\\d', '#')

      Solution

      1. Step 1: Understand regexp_replace parameters

        regexp_replace(text, pattern, replacement, flags) replaces matching parts. To replace all matches, use flag 'g'.
      2. Step 2: Choose pattern and flags to replace all digits

        Pattern '\\d+' matches one or more digits. Flag 'g' ensures all digit sequences replaced, not just first.
      3. Final Answer:

        regexp_replace('abc123def', '\\d+', '#', 'g') -> Option A
      4. Quick Check:

        Use 'g' flag to replace all matches [OK]
      Hint: Use 'g' flag in regexp_replace to replace all matches [OK]
      Common Mistakes:
      • Omitting 'g' flag replaces only first match
      • Using '\\d' without 'g' replaces only one digit
      • Confusing pattern syntax with wrong brackets
      3. What is the result of this query?
      SELECT regexp_match('user_2023_data', 'user_(\\d{4})_data');
      medium
      A. NULL
      B. ['user_2023_data']
      C. ['2023']
      D. An error due to wrong pattern

      Solution

      1. Step 1: Analyze the pattern 'user_(\\d{4})_data'

        The pattern looks for 'user_' followed by exactly 4 digits (captured), then '_data'.
      2. Step 2: Match pattern against 'user_2023_data'

        The string matches perfectly, capturing '2023' as the group.
      3. Final Answer:

        ['2023'] -> Option C
      4. Quick Check:

        Captured group returns ['2023'] [OK]
      Hint: Captured groups in regexp_match return as array [OK]
      Common Mistakes:
      • Expecting full string instead of captured group
      • Not escaping backslashes properly
      • Confusing regexp_match with regexp_replace output
      4. Identify the error in this query:
      SELECT regexp_replace('abc123def', '\\d+', '#');

      It is intended to replace all digit sequences with '#'.
      medium
      A. regexp_replace cannot replace digits
      B. Missing 'g' flag, so only first digit sequence replaced
      C. Replacement '#' must be in double quotes
      D. Pattern '\\d+' is invalid syntax

      Solution

      1. Step 1: Understand regexp_replace behavior without flags

        Without 'g' flag, regexp_replace replaces only the first match.
      2. Step 2: Check the pattern and replacement

        Pattern '\\d+' is valid and replacement '#' is correct. Only missing 'g' flag causes partial replacement.
      3. Final Answer:

        Missing 'g' flag, so only first digit sequence replaced -> Option B
      4. Quick Check:

        Use 'g' flag to replace all matches [OK]
      Hint: Add 'g' flag to replace all matches in regexp_replace [OK]
      Common Mistakes:
      • Assuming all matches replaced without 'g'
      • Thinking pattern syntax is wrong
      • Using single quotes incorrectly for replacement
      5. You want to extract the domain name from email addresses like 'user@example.com' using regexp_match. Which query correctly extracts 'example'?
      hard
      A. SELECT (regexp_match('user@example.com', '@([\\w]+)\\.com'))[1];
      B. SELECT regexp_match('user@example.com', '@([\\w]+)\\.com');
      C. SELECT regexp_replace('user@example.com', '.*@([\\w]+)\\.com', '\\1');
      D. SELECT regexp_replace('user@example.com', '@([\\w]+)\\.com', '\\1');

      Solution

      1. Step 1: Understand regexp_match returns array of groups

        regexp_match returns an array with captured groups. To get the domain, access first element [1].
      2. Step 2: Check pattern '@([\\w]+)\\.com'

        This pattern captures word characters after '@' and before '.com', which is the domain.
      3. Final Answer:

        SELECT (regexp_match('user@example.com', '@([\\w]+)\\.com'))[1]; -> Option A
      4. Quick Check:

        Access first group from regexp_match array [OK]
      Hint: Use (regexp_match(...))[1] to get captured group string [OK]
      Common Mistakes:
      • Not accessing array element from regexp_match
      • Using regexp_replace without global flag incorrectly
      • Confusing pattern syntax for domain extraction
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard