Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
279 views
in Technique[技术] by (71.8m points)

c# - 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.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...