这是我第一次尝试使用正则表达式。
我想要的是转换这个字符串:
" <Control1 x:Uid="1" />
<Control2 x:Uid="2" /> "
到
" <Control1 {1} />
<Control2 {2} /> "
基本上,将 x:Uid =“n”转换为 {n} ,其中 n 表示整数。
我认为它会起作用(当然不会)是这样的:
string input = " <Control1 x:Uid="1" />
<Control2 x:Uid="2" /> ";
string pattern = "\b[x:Uid=\"[\d]\"]\w+";
string replacement = "{}";
Regex rgx = new Regex(pattern);
string result = rgx.Replace(input, replacement);
或者
Regex.Replace(input, pattern, delegate(Match match)
{
// do something here
return result
});
我正在努力定义模式和替换字符串。我不确定我是否正在朝着正确的方向解决问题。
答案 0 :(得分:3)
方括号定义character class,您不需要这里。相反,您想使用capturing group:
string pattern = @"\bx:Uid=""(\d)""";
string replacement = "{$1}";
请注意使用逐字字符串以确保将\b
解释为word boundary anchor而不是退格符。