不带输入字符串的C#正则表达式格式化字符串

不带输入字符串的C#正则表达式格式化字符串,c#,regex,C#,Regex,我有以下用于匹配传入数据包的正则表达式: public static class ProtobufConstants { public static Regex ContentTypeNameRegex => new Regex("application/protobuf; proto=(.*?)"); } 我还需要以相同的格式编写传出数据包字符串,即创建类似于“application/protobuf;proto=mynamespace.class1”的字符串,理想情况下使用相

我有以下用于匹配传入数据包的正则表达式:

public static class ProtobufConstants
{
    public static Regex ContentTypeNameRegex => new Regex("application/protobuf; proto=(.*?)");
}
我还需要以相同的格式编写传出数据包字符串,即创建类似于
“application/protobuf;proto=mynamespace.class1”
的字符串,理想情况下使用相同的正则表达式定义
新正则表达式(“application/protobuf;proto=(*)

要将此代码保留在一个位置,是否可以使用此正则表达式模板并用字符串替换
(.*)
参数(根据上面的示例,我想替换
“mynamespace.class1”

我看到有一个
Regex.Replace(字符串输入,字符串替换)
,但是鉴于上面的
ContentTypeNameRegex
已经定义了格式,我没有输入本身,我只想格式化-不确定放在这里什么,如果有的话


是否可以以这种方式使用,或者是否需要恢复为string.Format?

如果您只想用其他内容替换匹配的组,可以将模式更改为:

(application/protobuf; proto=)(.*?)
这样,您可以通过执行以下操作来替换它:

Regex re = ContentTypeNameRegex;
string replacement = "mynamespace.class1";
re.Replace(input, "$1" + replacement);

使用
Regex.Replace
,但使用匹配计算器来处理格式化需要。下面是一个示例,根据匹配的内容,它简单地将斜杠替换为破折号,反之亦然

var text = "001-34/323";

Regex.Replace(text, "[-/]", me => { return me.Value == "-" ? "/" : "-";   })
结果

001/34-323

您可以对输入执行相同的操作,以决定更改它或按原样发送它

public static Regex ContentTypeNameRegex(string protoPattern=“.*”)
?您好,谢谢您的快速回复,我已经更新了我的问题,因为可能不清楚。请检查下面更新的答案。Regex确实不适合在没有输入的情况下格式化。