C# 从句子中提取模式字符串并替换另一个字符串

C# 从句子中提取模式字符串并替换另一个字符串,c#,C#,我有一个字符串 If(objid1+objid2=5;Len("Test");Len("T")) 正在寻找正则表达式以将Objid1转换为Obj(“1”) 因为我有一个内置函数,它支持Obj(“1”)而不是objid1,我不想将现有函数更改为使用此函数的另一个模块 所以上面的陈述看起来像 If(obj("1")+obj("2")=5;Len("Test");Len("T")) Objid+任意数字,最多3位 意思是objid{n}。。。。。。对象{nnn} 有谁能帮助我让正则表达式执行此操作

我有一个字符串

If(objid1+objid2=5;Len("Test");Len("T"))
正在寻找正则表达式以将
Objid1
转换为
Obj(“1”)

因为我有一个内置函数,它支持
Obj(“1”)
而不是
objid1
,我不想将现有函数更改为使用此函数的另一个模块

所以上面的陈述看起来像

If(obj("1")+obj("2")=5;Len("Test");Len("T"))
Objid
+任意数字,最多3位

意思是
objid{n}。。。。。。对象{nnn}


有谁能帮助我让正则表达式执行此操作吗?

您可以尝试此操作,您可能还希望启用不区分大小写的正则表达式匹配:

Regex.Replace(input, "objid(\\d+)", "obj(\"$1\")")

使用命名的捕获组:

objid(?\d{0,3})

例如:

var str = @"If(objid1+objid2=5;Len(""Test"");Len(""T""))";
var str2 = Regex.Replace(str, @"objid(?<id>\d{0,3})", @"obj(""${id}"")");

//str2 = If(obj("1")+obj("2")=5;Len("Test");Len("T"))
var str=@“If(objid1+objid2=5;Len(““Test”);Len(““T”)”);
var str2=Regex.Replace(str,@“objid(?\d{0,3})”,@“obj”(“${id}”);
//str2=If(obj(“1”)+obj(“2”)=5;Len(“测试”);Len(“T”))