Module lessons (1/4)
Capture groups: `(...)`
Parentheses (...) have two functions in one:
- Group sub-patterns, so that a quantifier applies to the whole
group (
(ab)+matchesab,abab,ababab). - Capture the matched substring, exposing it as a numbered group accessible separately (group 1, 2, 3… from left to right based on the opening parenthesis).
Pattern: (\d{4})-(\d{2})-(\d{2})
Sample: Data: 2024-03-15.
^^^^^^^^^^
Gruppi:
match = "2024-03-15"
gruppo1 = "2024"
gruppo2 = "03"
gruppo3 = "15"The editor on the right shows the groups under each match.
Quantifying a group
Without parentheses, ab+ means "a followed by one or more b". With parentheses
it becomes "one or more ab":
Pattern Matcha su 'ababab':
ab+ 'ab' (poi 'a' e 'b' separati, non collegati)
(ab)+ 'ababab' come gruppo unicoCapture group indices and usage
Each pair of parentheses not preceded by special characters creates a numbered capture group. Group 1 corresponds to the first open parenthesis, group 2 to the second, and so forth. In JavaScript, you can access these groups via the array returned by exec or matchAll.
Try it
Find every date in YYYY-MM-DD format, capturing year, month and day as three separate groups.
Show hint
Wrap each of the three digit blocks in parentheses: each one creates a numbered group.
Solution available after 3 attempts
Review exercise
Find every repetition of `ab` (one or more) as a single match. Without parentheses, the quantifier would apply only to the last `b`.
Show hint
(ab)+ treats 'ab' as a unit and looks for one or more consecutive repetitions.
Solution available after 3 attempts
Additional challenge
Create three capture groups to extract the day, month, and year separately from dates in the format `DD/MM/YYYY`.
Show hint
Enclose each \d{2} or \d{4} in parentheses.
Solution available after 3 attempts