如何使用正则表达式替换不是注释的代码?
..PATTERN.. PATTERN // .. PATTERN ..
到
..ANOTHER.. ANOTHER // .. PATTERN ..
评论可以是//
或/* */
正则表达式找到评论是:
/\*(.|[\r\n])*?\*/|(//.*)
答案 0 :(得分:0)
只需做一个简单的双态扫描仪(REGULAR_TOKEN,COMMENT_TOKEN,......)
然后为每个REGULAR_TOKEN做一个简单的替换,并保留comment_tokens。我再次推荐Boost Spirit /
如果您更多地指定了目标/问题,我可能会举一个例子
答案 1 :(得分:0)
通过使用负面的lookbehind(但仍然容易出现“.... // .....”形式的文字字符串问题,您可以轻松地对单行注释执行此操作):
string target = "replace // don't replace";
var output = Regex.Replace(target, "(?<!//.*)replace", "new string");
Console.WriteLine(output); // new string // don't replace
也许这可以用于多线:
string target =
@"replace;
/*
* don't replace
*/
replace;
";
var output = Regex.Replace(target, @"(?<!./\*\s*)replace(?!\s*\*/)", "new string", RegexOptions.Singleline);
Console.WriteLine(output);
输出:
新字符串; / * *不要更换 * / 新字符串;