我有以下正则表达式用于匹配传入数据包:
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
您可以对输入执行相同的操作,以决定更改它或按原样发送。