What is a capturing group in a regular expression?
A capturing group is a part of a regular expression enclosed in parentheses (). It saves the matched text so you can use it later in your code or in the same pattern.
Click to reveal answer
beginner
How do you refer to a captured group inside the same regular expression?
You use a backreference, which is written as \1, \2, etc., where the number matches the order of the capturing group.
Click to reveal answer
intermediate
Example: What does the pattern '/(\w+) \1/' match?
It matches two identical words next to each other, like 'hello hello'. The first (\w+) captures a word, and \1 checks if the next word is the same.
Click to reveal answer
intermediate
In PHP, how do you access the text matched by capturing groups after using preg_match?
The matched groups are stored in an array passed by reference to preg_match. The full match is at index 0, and captured groups start from index 1.
Click to reveal answer
beginner
Why are capturing groups useful in programming?
They let you extract parts of a string easily, reuse matched text, and perform complex text manipulations like swapping words or validating repeated patterns.
Click to reveal answer
What symbol is used to create a capturing group in a regular expression?
A()
B[]
C{}
D<>
✗ Incorrect
Parentheses () are used to create capturing groups in regular expressions.
In PHP regex, what does \2 refer to?
AThe second word in the string
BThe second character in the string
CThe second line of input
DThe second capturing group
✗ Incorrect
\2 is a backreference to the second capturing group in the regex.
What will '/(\d+)\1/' match in the string '123123'?
AAny digits
BOnly one digit
CTwo identical sequences of digits in a row
DNo match
✗ Incorrect
The pattern matches a sequence of digits followed immediately by the same sequence again.
After preg_match('/(foo)(bar)/', 'foobar', $matches), what is in $matches[1]?
Anull
Bfoo
Cfoobar
Dbar
✗ Incorrect
$matches[1] contains the text matched by the first capturing group, which is 'foo'.
Which of these is NOT a use of capturing groups?
AChanging the case of letters automatically
BReusing matched text in the same regex
CExtracting parts of a string
DValidating repeated patterns
✗ Incorrect
Capturing groups do not change letter case automatically; they only capture and reference matched text.
Explain what capturing groups and backreferences are and how they work together in regular expressions.
Think about how you can remember and reuse parts of a matched string.
You got /4 concepts.
Describe how you would use capturing groups and backreferences in PHP to find repeated words in a sentence.
Focus on matching a word and then the same word again.
You got /4 concepts.
Practice
(1/5)
1. What does a capturing group in a PHP regular expression do?
easy
A. It ignores the matched text inside parentheses.
B. It repeats the entire pattern multiple times.
C. It saves part of the matched text for later use.
D. It changes the case of matched text.
Solution
Step 1: Understand capturing groups
Parentheses () in regex save the matched part for reuse.
Step 2: Purpose of capturing groups
This saved part can be accessed later in the code or reused in the pattern.
Final Answer:
It saves part of the matched text for later use. -> Option C
Quick Check:
Capturing group = save matched text [OK]
Hint: Parentheses capture text to reuse later in regex or code [OK]
Common Mistakes:
Thinking capturing groups repeat patterns
Believing they ignore matched text
Assuming they change text case
2. Which of the following is the correct syntax for a backreference to the first capturing group in a PHP regex pattern?
easy
A. \(1\)
B. \\1
C. \$1
D. \1
Solution
Step 1: Identify backreference syntax in PHP regex
Backreferences use a single backslash followed by group number, like \1 in regex patterns.
Step 2: Differentiate from string escaping
In PHP strings, to represent \1 you write "\\1" but the regex pattern itself uses \1.
Final Answer:
\1 -> Option D
Quick Check:
Backreference first group = \1 [OK]
Hint: Use single backslash before group number for backreference in regex [OK]
Common Mistakes:
Using double backslash instead of single
Confusing backreference with variable syntax
Adding parentheses around the number
3. What will be the output of the following PHP code?
The pattern /(\w+)\s\1/ matches a word, a space, then the same word again (backreference \1).
Step 2: Apply pattern to the subject string
The string 'hello hello world' contains 'hello hello' which matches the pattern.
Final Answer:
hello hello -> Option B
Quick Check:
Backreference matches repeated word = hello hello [OK]
Hint: Backreference \1 matches exact previous captured word [OK]
Common Mistakes:
Ignoring backreference meaning
Matching different words instead of repeated
Expecting full string match
4. Identify the error in this PHP regex pattern: preg_match('/(\d+)\s\2/', '123 123', $matches);
medium
A. Backreference \2 is invalid because only one group is captured.
B. The pattern should use \1 instead of \2 for backreference.
C. The pattern is missing delimiters.
D. The pattern should not use capturing groups.
Solution
Step 1: Count capturing groups in the pattern
There is only one capturing group: (\d+), so only \1 is valid.
Step 2: Check backreference usage
Using \2 refers to a second group which does not exist, causing an error.
Final Answer:
Backreference \2 is invalid because only one group is captured. -> Option A
Quick Check:
Backreference number must match captured groups [OK]
Hint: Backreference number must not exceed captured groups count [OK]
Common Mistakes:
Using backreference number higher than groups
Ignoring missing groups
Confusing delimiters with backreferences
5. Given the string 'abc123abc456', which regex pattern using capturing groups and backreferences will match the repeated substring 'abc' only if it appears twice separated by digits?
hard
A. /(abc)\d+\1/
B. /(abc)\1\d+/
C. /abc(\d+)abc/
D. /(abc)+\d+/
Solution
Step 1: Understand the requirement
We want to match 'abc' repeated twice with digits in between.
Step 2: Analyze each pattern
/(abc)\d+\1/: /(abc)\d+\1/ matches 'abc', digits, then same 'abc' again. This fits the requirement. /(abc)\1\d+/: /(abc)\1\d+/ expects 'abcabc' then digits, which is incorrect. /abc(\d+)abc/: /abc(\d+)abc/ matches 'abc', digits, 'abc' but digits are captured, not 'abc'. /(abc)+\d+/: /(abc)+\d+/ matches one or more 'abc' then digits, but no backreference to ensure repetition.
Final Answer:
/(abc)\d+\1/ -> Option A
Quick Check:
Backreference \1 repeats captured 'abc' after digits [OK]
Hint: Backreference \1 repeats first group exactly where needed [OK]
Common Mistakes:
Placing backreference before digits
Not using backreference to repeat 'abc'
Capturing digits instead of 'abc'
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.