How to use named groups when performing a Regex.Replace()

How do I use named captures when performing Regex.Replace? I have gotten this far and it does what I want but not in the way I want it:

[TestCase("First Second", "Second First")]
public void NumberedReplaceTest(string input, string expected)
{
    Regex regex = new Regex("(?<firstMatch>First) (?<secondMatch>Second)");
    Assert.IsTrue(regex.IsMatch(input));
    string replace = regex.Replace(input, "$2 $1");
    Assert.AreEqual(expected, replace);
}

I want to match the two words with named captures and then use the (named) captures when performing the replace.

Answers


Instead of "$2 $1", you can use "${secondMatch} ${firstMatch}".

There is a list of all the replacements you can do here.

Here is an abbreviated list:

$number - The captured group by number.

${name} - The captured group by name.

$$ - $ literal.

$& - Entire match.

$` - The input string before the match.

$' - The input string after the match.

$+ - The last group captured.

$_ - The entire input string.


Simply replace with ${groupName}

[TestCase("First Second", "Second First")]
public void NumberedReplaceTest(string input, string expected)
{
    Regex regex = new Regex("(?<firstMatch>First) (?<secondMatch>Second)");
    Assert.IsTrue(regex.IsMatch(input));
    string replace = regex.Replace(input, "${secondMatch} ${firstMatch}");
    Assert.AreEqual(expected, replace);
}

Need Your Help

"Android Asset Studio" adds extra space when I upload my .png icons, but doesn't when it uses its internal cliparts. Why?

android android-studio icons android-icons

I'm trying to create some nice icons for some Android APP I'm dealing with, and someone directed me to the "Android Asset Studio", that nice online tool which creates full packs of icons ready to be

How to install psycopg2 with "pip" on Python?

python virtualenv psycopg2 pip

I'm using virtualenv and I need to install "psycopg2".