不带输入字符串的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确实不适合在没有输入的情况下格式化。