如何在执行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); }