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

前端 未结 2 889
被撕碎了的回忆
被撕碎了的回忆 2020-12-08 00:24

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 Sec         


        
相关标签:
2条回答
  • 2020-12-08 00:52

    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.

    0 讨论(0)
  • 2020-12-08 01:13

    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);
    }
    
    0 讨论(0)
提交回复
热议问题