正则表达式替换char buf中的模式提取buf [10];

时间:2014-03-01 02:16:54

标签: c# regex

需要以下的正则表达式模式:

input = "char buf[10];"

To be replaced to input = "String buf = null;"

目前正在使用此功能,但我对Regex并没有太多经验并且卡住了

 input = Regex.Replace(input, @"char\s\(.+\)\s*\[\d\]", @"String = $1");

1 个答案:

答案 0 :(得分:2)

char\s\(.+\)\s*\[\d\]
      ^^  ^^

在正则表达式的突出显示部分,您将匹配()个字符,这些字符不会出现在输入文本中。您必须删除转义字符才能使其成为实际的捕获组,因此您可以在替换文本中使用其内容。

下一个问题是您只匹配方括号内的单个数字。您也希望接受多个数字,因此请使用\d+而不是\d

最后,我认为您的替换字符串应该是String $1,因为匹配的组是变量名而不是内容。

Regex.Replace(input, @"char\s(.+)\s*\[\d+\]", @"String $1"); // String buf;