我有以下正则表达式用于匹配传入数据包:
public static class ProtobufConstants
{
public static Regex ContentTypeNameRegex => new Regex("application/protobuf; proto=(.*?)");
}
我还需要以相同的格式编写输出数据包字符串,即理想情况下,使用相同的正则表达式定义"application/protobuf; proto=mynamespace.class1"
创建类似于new Regex("application/protobuf; proto=(.*?)");
的字符串。
要将此代码保存在一个地方,是否可以使用此正则表达式模板并将(.*?)
参数替换为字符串(按照上述示例,我想用"mynamespace.class1"
代替)。
我看到有一个Regex.Replace(string input, string replacement)
,但是鉴于上面的ContentTypeNameRegex
已经定义了格式,我本身没有输入,我只想格式化-不知道在这里输入什么,如果有的话。
是否可以这种方式使用,还是我需要恢复为string.Format?
答案 0 :(得分:2)
如果您只想将匹配的组替换为其他组,则可以将模式更改为:
(application/protobuf; proto=)(.*?)
这样,您可以通过执行以下操作来替换它:
Regex re = ContentTypeNameRegex;
string replacement = "mynamespace.class1";
re.Replace(input, "$1" + replacement);
答案 1 :(得分:0)
使用Regex.Replace
,但使用匹配评估程序来处理您的格式需求。这是一个示例,它根据匹配的内容将斜杠简单地替换为破折号,反之亦然。
var text = "001-34/323";
Regex.Replace(text, "[-/]", me => { return me.Value == "-" ? "/" : "-"; })
结果
001/34-323
您可以对输入内容进行相同的操作,以决定对其进行更改或按原样发送。