Summary: in this tutorial, you will learn about regex non-capturing groups and how to use them to avoid unnecessary overhead.
Introduction to the Regex Non-capturing group
A capturing group matches a pattern and stores a match result in matching groups. To create a capturing group, you place a pattern inside the parentheses ()
like this:
(P)
Code language: C# (cs)
In this syntax, the regex engine matches the pattern P
and stores the match result inside groups, which you can access via the Groups
property of the Match
object.
In some situations, you want to create a group but you don’t want to capture it match result. To do that, you use a non-capturing group with the following syntax:
(?:P)
Code language: C# (cs)
When you use a non-capturing group, the regex engine matches the pattern P
but doesn’t store the match result in Groups
.
Non-capturing groups are useful when you want to create a group and apply quantifiers, alternations, or other operations to a group of patterns but you don’t want to capture them.
Non-capturing groups also help you to write regular expressions that avoid unnecessary capture group overhead.
Regex Non-capturing group example
The following example uses a non-capturing group to match a color code in the format "#
or RRGGBB
""0x
:RRGGBB
"
using System.Text.RegularExpressions;
using static System.Console;
var text = "My favorite color is #00FF00.";
var pattern = @"(?:#|0x)([A-Fa-f0-9]{6})";
var match = Regex.Match(text, pattern);
if (match.Success)
{
WriteLine($"Your favorite color code is {match.Groups[1].Value}");
}
Code language: C# (cs)
Output:
Your favorite color code is 00FF00
Code language: C# (cs)
In the regular expression pattern (?:#|0x)([A-Fa-f0-9]{6})
:
- The non-capturing group
(?:#|0x)
matches either the “#
” symbol or the “0x
” prefix. - The capturing group
([A-Fa-f0-9]{6})
captures the actual color code.
Summary
- Use non-capturing groups to group patterns together without capturing the matched substrings.