如何在执行Regex.Replace()时使用命名组

如何在执行Regex.Replace时使用命名捕捉? 我已经得到了这么多,它做我想要的,但不是我想要的方式:

[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); } 

我想用命名的捕捉匹配这两个单词,然后在执行replace时使用(named)捕捉。

您可以使用"${secondMatch} ${firstMatch}"代替"$2 $1" "${secondMatch} ${firstMatch}"

有一个你可以在这里做的所有replace列表。

这是一个简短的列表:

$ number – 通过编号捕获的组。

$ {name} – 按名称捕获的组。

$$ – $文字。

$& – 整个匹配。

$` – 匹配前的inputstring。

$' – 匹配后的inputstring。

$ + – 最后一组被捕获。

$ _ – 整个inputstring。

只需replace${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); }