3.9. Retrieve Part of the Matched Text
Problem
As in Recipe 3.7, you have a regular expression that matches a substring of the subject text, but this time you want to match just one part of that substring. To isolate the part you want, you added a capturing group to your regular expression, as described in Recipe 2.9.
For example, the regular expression ‹http://([a-z0-9.-]+)› matches http://www.regexcookbook.com in the
string Please visit
http://www.regexcookbook.com for more information. The
part of the regex inside the first capturing group matches www.regexcookbook.com,
and you want to retrieve the domain name captured by the first
capturing group into a string variable.
We’re using this simple regex to illustrate the concept of capturing groups. See Chapter 7 for more accurate regular expressions for matching URLs.
Solution
C#
For quick one-off matches, you can use the static call:
string resultString = Regex.Match(subjectString,
"http://([a-z0-9.-]+)").Groups[1].Value;To use the same regex repeatedly, construct a Regex object:
Regex regexObj = new Regex("http://([a-z0-9.-]+)");
string resultString = regexObj.Match(subjectString).Groups[1].Value;VB.NET
For quick one-off matches, you can use the static call:
Dim ResultString = Regex.Match(SubjectString,
"http://([a-z0-9.-]+)").Groups(1).ValueTo use the same regex repeatedly, construct a Regex object:
Dim RegexObj As New Regex("http://([a-z0-9.-]+)")
Dim ResultString = RegexObj.Match(SubjectString).Groups(1).ValueJava
String resultString ...