Consider the following regular expression that represents a U.S. phone number such as 222-444-1111:
\d{3}-\d{3}-\d{4}
Suppose we wish to separate this into two groups: area code and local number.
We can achieve this by using parentheses to capture each group:
(\d{3})-(\d{3}-\d{4})
| Syntax | Meaning |
|---|---|
| (expr) | Capture matched expression expr into indexed group |
| (?number) | Capture matched substring into a specified group number |
| (?'name') | Capture matched substring into group name |
| (?'name1-name2') | Undefinename2, and store interval and current group into name1; if name2 is undefined, matching backtracks; |
| (?:expr) | Noncapturing group |
Back references
| Parameter syntax | Meaning |
|---|---|
| \index | Reference a previously captured group by index |
| \k<name> | Reference a previously captured group by name |
We then retrieve the groups programmatically as follows:
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main(string[] args)
{
Match m = Regex.Match ("222-444-1111", @"(\d{3})-(\d{3}-\d{4})");
Console.WriteLine (m.Groups[1]);
Console.WriteLine (m.Groups[2]);
}
}
The output:
222
444-1111The zeroth group represents the entire match.
In other words, it has the same value as the match's Value:
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main(string[] args)
{
Match m = Regex.Match ("222-444-1111", @"(\d{3})-(\d{3}-\d{4})");
Console.WriteLine (m.Groups[0]);
Console.WriteLine (m);
}
}
The output:
222-444-1111
222-444-1111You can refer to a group within a regular expression.
The \n syntax lets you index the group by group number n within the expression.
In the following example, we find all words in a string starting and ending in the same letter:
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main(string[] args)
{
foreach (Match m in Regex.Matches ("bee cake level bob", @"\b(\w)\w+\1\b"))
Console.Write (m + " ");
}
}
The output:
level bob
| ww__w___.__j_a_v_a__2s___.c___o_m | Contact Us |
| Copyright 2009 - 12 Demo Source and Support. All rights reserved. |
| All other trademarks are property of their respective owners. |