从Sentence中提取Pattern String并替换另一个字符串

时间:2014-11-13 02:46:35

标签: 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}...... objid{nnn}

有人可以帮我解决正则表达式吗?

2 个答案:

答案 0 :(得分:2)

使用命名捕获组:

objid(?<id>\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"))

答案 1 :(得分:1)

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

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