RegEx替换特定匹配的字符串的第一个和最后一个字符

时间:2015-04-14 03:07:36

标签: c# .net regex replace

像这样的东西。

句子是

string ttt = "This is ?chef? and ?teacher? time";

这句话应改为

ttt = "This is 'chef' and 'teacher' time";

我正在查看一些在线样本   Regex.Replace(ttt, @"\?([^\$]*)\?", "REPLACE");但我无法弄清楚应该写什么代替 REPLACE 。它应该是每个字的基础。

请帮助我。

1 个答案:

答案 0 :(得分:2)

您将在替换调用中引用捕获组。它被称为反向引用。

String ttt = "This is ?chef? and ?teacher? time";
String result = Regex.Replace(ttt, @"\?([^?]*)\?", "'$1'");
Console.WriteLine(result); //=> "This is 'chef' and 'teacher' time"

Back-references回想一下capture group ( ... )匹配的内容。反向引用指定为($);然后是一个数字,表示要召回的群组号

注意:我使用[^?]进行否定,而不是匹配除文字$之外的所有内容。


但如果你只是想要替换?,那么简单的替换就足够了:

String result = ttt.Replace("?", "'");