0

这是我第一次尝试使用正则表达式。

我想要归档的是转换这个字符串:

" <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
  });

我正在努力定义模式和替换字符串。我不确定我是否朝着解决问题的正确方向前进。

4

1 回答 1

3

方括号定义了一个你不想要的字符类。相反,您想使用捕获组

string pattern = @"\bx:Uid=""(\d)""";
string replacement = "{$1}";

请注意使用逐字字符串以确保将\b其解释为单词边界锚而不是退格字符。

于 2013-10-17T11:26:06.970 回答