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



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

public static class ProtobufConstants
{
public static Regex ContentTypeNameRegex => new Regex("application/protobuf; proto=(.*?)");
}

我还需要以相同的格式写入传出数据包字符串,即最好使用相同的正则表达式定义new Regex("application/protobuf; proto=(.*?)");

创建类似于"application/protobuf; proto=mynamespace.class1"

字符串。要将此代码保存在一个地方,是否可以使用此正则表达式模板并将(.*?)参数替换为字符串(根据上面的示例,我想替换"mynamespace.class1"(。

我看到有一个Regex.Replace(string input, string replacement)但鉴于上述ContentTypeNameRegex已经定义了格式,我本身没有输入,我只想格式化 - 不确定在这里放什么,如果有的话。

是否可以以这种方式使用,或者我需要恢复为字符串。格式?

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

(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

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

最新更新